当前位置:首页>WordPress建站>后台定制>让WordPress后台用户列表可以搜索名字、姓氏和公开显示名

让WordPress后台用户列表可以搜索名字、姓氏和公开显示名

WordPress 主题 CoreNext

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

wordpress-user-search-wpdaxue_com

如果你希望能通过搜索用户的名字、姓氏和公开显示名找到用户,你可以将下面的代码添加到当前主题的 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;
}

如果以上的代码仍不能满足你的要求,那你可以试试 Better User Search 插件,它可以让你的用户列表页面支持搜索所有字段。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
后台定制

显示WordPress当前可用的所有简码(Shortcode)

2013-7-2 10:06:04

后台定制

WordPress媒体库显示文件大小(占用空间)和尺寸

2013-7-3 8:56:44

3 条回复 A文章作者 M管理员
  1. 大大大大鹿眸

    为什么搜中文不行?

  2. 用了代码之后是可以搜索名字了,但是,问题来了。无论点击哪个用户组,都只显示全部用户组的前4个人,希望能得到解答。

  3. 使用这段代码后,无论是点击文章列表还是页面列表里的快速编辑,作者:一栏 会出现很多重复的昵称,没有权限的用户,也会出现在列表中

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索