回答:
単にWP_User_Query
検索引数を指定して使用します。
したがって、たとえばuser_email
、{$wpdb->prefix}users
テーブルの彼または類似の列にキーワードがあるユーザーを検索する場合は、次のように実行できます。
$users = new WP_User_Query( array(
'search' => '*'.esc_attr( $your_search_string ).'*',
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
) );
$users_found = $users->get_results();
これ*
はワイルドカードです。したがって、たとえばuser_email
を単一のドメインに制限すると、次の検索文字列が得られます*@example.com
。
search
文字列には、いくつかの「魔法」の機能を備えています。search_columns
デフォルトは...
user_email
argに@
存在する場合search
。user_login
そして、ID
あればsearch
引数が数値でありますuser_url
もしsearch
文字列が含まれていますhttp://
かhttps://
user_login
およびuser_nicename
文字列が存在する場合。これらのデフォルトはすべて、 search_columns
引数が指定されていない場合にのみ設定されます。
たとえばfirst_name
またはlast_name
で検索する場合meta_query
は、メインテーブルの一部ではないため、aを実行する必要があります。
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();
正しい検索文字列を取得してください。通常はですがget_query_var('s');
、フォームによっては、たとえば、name/id
使用$_GET['user_search']
して取得したい何かが異なる場合もあります。文字列を適切に食い止め、文字列の最初と最後から不要な空白を削除してください。
これはキーがあるarray( array() )
ので注意してくださいrelation
。単一のキーを検索するだけの場合は、次のようにすると簡単です。
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_key' => 'first_name',
'meta_value' => $search_string,
'meta_compare' => 'LIKE',
) );
$users_found = $users->get_results();
結果は、可能性が次のように近くを見て:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'search' => "*{$search_string}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();
functions.php
テンプレート、またはテーマの切り替え時に機能を失わないようにカスタムミニプラグインにうまくまとめられた(これが最適です)のいずれかです。
display_name
はの列ですwp_users
。2つの質問が思い浮かびます。1:これはデータベーススキーマに対する最近の変更ですか?2:メタクエリのsearch_columns
代わりに値として使用できますか?
これはカイザーの答えの代わりに私を助けました:https : //laubsterboy.com/blog/2015/07/search-wordpress-users-by-name/
しかし、このソリューションでは$wpdb->escape($usermeta_keys)
関数がエラーを生成したため、単にを使用しました$usermeta_keys
。