【发布时间】:2014-08-27 23:21:35
【问题描述】:
我正在创建一个搜索框,当输入“名字或全名”时,结果是一个列出用户 ID、电子邮件、全名等的表格......
可能有多个用户具有相同的“名字或全名”,因此我需要遍历结果集。
搜索还需要灵活,以便 John Smith 或 John Smi 或 John 能够工作。
例如 [名姓] [搜索]
在 WordPress 中有没有办法做到这一点,还是我必须使用 MySQL?
【问题讨论】:
我正在创建一个搜索框,当输入“名字或全名”时,结果是一个列出用户 ID、电子邮件、全名等的表格......
可能有多个用户具有相同的“名字或全名”,因此我需要遍历结果集。
搜索还需要灵活,以便 John Smith 或 John Smi 或 John 能够工作。
例如 [名姓] [搜索]
在 WordPress 中有没有办法做到这一点,还是我必须使用 MySQL?
【问题讨论】:
谢谢,
这是我需要的
$search_name = 'John Smith';
$name_array = preg_split("/[\s,]+/", $search_name);
$users = new WP_User_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'first_name',
'value' => $name_array[0],
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $name_array[1],
'compare' => 'LIKE'
)
)
));
$users_found = $users->get_results();
【讨论】:
如果您正在编写自己的搜索功能,则需要使用Wp_User_Query。您会在该页面中找到很多示例,但您需要的可能是最基本的形式,如下所示:
$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();
但是,如果您只想在后端搜索用户,那么您可以使用插件,那里有很多。 This one 可以很好地满足您的需求
【讨论】: