WordPressの管理画面でユーザー一覧にいろいろ項目追加した際に・・・
その項目で検索したいのに出来ない・・・っていうことありますでしょ。
これはその時のためのTipsです。
いろいろ調べたんですが、調べが足りないのかもしれないですが、日本語では探しきれず、英文で見つけました。
参考になった記事のご紹介
http://www.tomauger.com/2012/tips-and-tricks/expanded-user-search-in-wordpress
この記事がとっても参考になりました。
Thanks! tomauger!
記事の中の「Extended user search full example」というサンプルコードがそのまま使えました。
助かった〜
私なりに変更したバージョンを掲載します。
このコードをご利用テーマの functions.php に追記してあげると良いはずです!
Expanded User Search in WordPress
function extended_user_search( $user_query ) {
// Make sure this is only applied to user search
if ( $user_query->query_vars['search'] ){
$search = trim( $user_query->query_vars['search'], '*' );
if ( $_REQUEST['s'] == $search ){
global $wpdb;
$user_query->query_from .= " JOIN wp_usermeta UM1 ON UM1.user_id = {$wpdb->users}.ID AND UM1.meta_key = 'first_name'";
$user_query->query_from .= " JOIN wp_usermeta UM2 ON UM2.user_id = {$wpdb->users}.ID AND UM2.meta_key = 'last_name'";
$user_query->query_from .= " JOIN wp_usermeta UM3 ON UM3.user_id = {$wpdb->users}.ID AND UM3.meta_key = 'user_title'";
$user_query->query_from .= " JOIN wp_usermeta UM4 ON UM4.user_id = {$wpdb->users}.ID AND UM4.meta_key = 'nickname'";
$user_query->query_where = 'WHERE 1=1' . $user_query->get_search_sql( $search, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value', 'UM4.meta_value' ), 'both' );
}
}
}
add_action( 'pre_user_query', 'extended_user_search' );
このコードで私自身が拡張した usermeta は user_title だけです。
あとは 姓 名 表示名 から検索出来るようになりました。
user_title は削除したり 変更したり適宜同様に追加したりして応用出来ます。
先日から会員制サイトで便利なコード書いてたりしますが
これもまた会員制サイトで大変重宝するカスタマイズですね。
お客様に「ユーザー一覧で検索出来んやないか!!」って怒られなくなります(笑)
こうして私も誰かに助けられたようにこの記事で助けられる方がいらっしゃるなら大変うれしく思います!