默认情况下,在WordPress后台的用户列表中,只能通过用户名和邮箱搜索用户。

如果你希望能通过搜索用户的名字、姓氏和公开显示名找到用户,你可以将下面的代码添加到当前主题的 functions.php 文件即可:
/*
* 让WordPress后台用户列表可以搜索名字、姓氏和公开显示名
* From https://www.wpdaxue.com/wordpress-user-search.html
*/
//让函数只应用于WordPress后台
if (is_admin()) {
//通过钩子挂载函数
add_action('pre_user_query', 'wpdaxue_pre_user_query');
}
function wpdaxue_pre_user_query($user_search) {
global $wpdb;
$vars = $user_search->query_vars;
if (!is_null($vars['search'])) {
// 出于某种原因,搜索词被星号包括,删除它们
$search = preg_replace('/^\*/', '', $vars['search']);
$search = preg_replace('/\*$/', '', $search);
//搜索公开显示名
if(!empty($search)){
$user_search->query_where = substr(trim($user_search->query_where), 0, -1) . " OR display_name LIKE '%". $search . "%')";
}
//搜索名字和姓氏
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON " .
"{$wpdb->users}.ID=m1.user_id AND (m1.meta_key='first_name')";
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m2 ON " .
"{$wpdb->users}.ID=m2.user_id AND (m2.meta_key='last_name')";
$names_where = $wpdb->prepare("m1.meta_value LIKE '%s' OR m2.meta_value LIKE '%s'", "%{$search}%", "%$search%");
$user_search->query_where = str_replace('WHERE 1=1 AND (', "WHERE 1=1 AND ({$names_where} OR ", $user_search->query_where);
}
return $user_search;
} |
/*
* 让WordPress后台用户列表可以搜索名字、姓氏和公开显示名
* From https://www.wpdaxue.com/wordpress-user-search.html
*/
//让函数只应用于WordPress后台
if (is_admin()) {
//通过钩子挂载函数
add_action('pre_user_query', 'wpdaxue_pre_user_query');
}
function wpdaxue_pre_user_query($user_search) {
global $wpdb;
$vars = $user_search->query_vars;
if (!is_null($vars['search'])) {
// 出于某种原因,搜索词被星号包括,删除它们
$search = preg_replace('/^\*/', '', $vars['search']);
$search = preg_replace('/\*$/', '', $search);
//搜索公开显示名
if(!empty($search)){
$user_search->query_where = substr(trim($user_search->query_where), 0, -1) . " OR display_name LIKE '%". $search . "%')";
}
//搜索名字和姓氏
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON " .
"{$wpdb->users}.ID=m1.user_id AND (m1.meta_key='first_name')";
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m2 ON " .
"{$wpdb->users}.ID=m2.user_id AND (m2.meta_key='last_name')";
$names_where = $wpdb->prepare("m1.meta_value LIKE '%s' OR m2.meta_value LIKE '%s'", "%{$search}%", "%$search%");
$user_search->query_where = str_replace('WHERE 1=1 AND (', "WHERE 1=1 AND ({$names_where} OR ", $user_search->query_where);
}
return $user_search;
}
如果以上的代码仍不能满足你的要求,那你可以试试 Better User Search 插件,它可以让你的用户列表页面支持搜索所有字段。
来源:
https://www.wpdaxue.com/wordpress-user-search.html
微信公众号
手机浏览(小程序)
Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57
Warning: get_headers(): Failed to enable crypto in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57
Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_32458.jpg): failed to open stream: operation failed in
/mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line
57