Answers:
只需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
arg中存在。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']
例如,您可能希望使用该内容。确保正确地保留它,并从字符串的开头和结尾除去不需要的空格。
请记住,这是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
。我想到两个问题。1:这是对数据库架构的最近更改吗?2:是否可以将其用作值search_columns
而不是元查询?
这帮助了我,而不是凯撒的答案:https : //laubsterboy.com/blog/2015/07/search-wordpress-users-by-name/
但是在此解决方案$wpdb->escape($usermeta_keys)
函数中产生了错误,因此我简单地使用$usermeta_keys
。