php 如何查找人名,让WordPress后台用户列表可以搜索名字、姓氏和公开显示名

/*

* 让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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值