搜索主表
只需使用
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
如果@
中存在search
参数user_login
和ID
如果search
arg是数字user_url
如果search
字符串包含http://
或https://
或。。。user_login
和user_nicename
如果存在字符串
只有在“否”时才设置所有这些默认值
search_columns
已指定参数。
如果要搜索,请搜索元表,例如first_name
或last_name
, 那么你必须做一个meta_query
因为它们不是主表的一部分:
$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\']
例如确保正确地对其进行esacpe,并从字符串的开头和结尾删除不需要的空白。
请记住,这是一个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();