WordPressのユーザー一覧で、多くのユーザーやゲスト登録をしているサイトなどでは、メールアドレスやユーザー名以外で検索したいと言われる事もあります。
特に名前で検索したいと言われる事が多いため、その方法もメモしておきます。
このように名前を入力していても、右上のユーザー検索に「田中」と入力して検索しても該当なしとなります。
エンドユーザーやクライアントはには、これはできないほうが違和感があるようで、どうして検索できないのか?と聞かれます。
これを、解消するにはuser_queryをfunctions.phpに追記して検索のクエリーを追記します。
function extended_user_search( $user_query ) { if ( $user_query->query_vars['search'] ){ $search = trim( $user_query->query_vars['search'], '*' ); if ( $_REQUEST['s'] == $search ){ global $wpdb; $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM1 ON UM1.user_id = {$wpdb->users}.ID AND UM1.meta_key = 'first_name'"; $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM2 ON UM2.user_id = {$wpdb->users}.ID AND UM2.meta_key = 'last_name'"; $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM3 ON UM3.user_id = {$wpdb->users}.ID AND UM3.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' ), 'both' ); } } } add_action( 'pre_user_query', 'extended_user_search' );
このコードを追加することで、検索対象が姓・名・ニックネームも追加されます。部分一致になりますので、「田中」でしたら「田」だけでも対象となります。