欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

让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; }

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 让WordPress后台用户列表可以搜索名字、姓氏和公开显示名
分享到: 更多 (0)