php 搜索用户名,WordPress后台用户名列表中显示用户昵称&搜索中包含昵称

在主题的functions.php里,加入如下代码,可实现后台用户列表里调用“昵称”字段。

/**

* WordPress 后台用户列表显示用户昵称

* https://www.wpdaxue.com/add-user-nickname-column.html

*/

add_filter('manage_users_columns', 'add_user_nickname_column');

function add_user_nickname_column($columns) {

$columns['user_nickname'] = '昵称';

return $columns;

}

add_action('manage_users_custom_column', 'show_user_nickname_column_content', 20, 3);

function show_user_nickname_column_content($value, $column_name, $user_id) {

$user = get_userdata( $user_id );

$user_nickname = $user->nickname;

if ( 'user_nickname' == $column_name )

return $user_nickname;

return $value;

}

通过下列代码,可以实现取消掉“姓名"这一栏。

unset($columns['name']); //移除“姓名”这一栏

如果想要使用昵称进行搜索(仅限后台),依然是在functions.php里加入代码:

这里需要注意的是,事实上这段代码调用了2张表,即wp_users和wp_usermeta。

主要是因为用户昵称,是写在wp_usermeta表里的是meta_key对应的meta_value。

而且有一个奇怪的问题是,在wp_user表里,昵称叫"nicename",在meta_value里,叫nickname。

感觉像是一个历史遗留的笔误。不过到了今天这个模样,也没法改了。

function wpkj_extend_user_search( $u_query ){

// 确保代码仅应用于用户搜索

if ( $u_query->query_vars['search'] ){

$search_query = trim( $u_query->query_vars['search'], '*' );

if ( $_REQUEST['s'] == $search_query ){

global $wpdb;

// 添加昵称搜索查询语句

$u_query->query_from .= " JOIN {$wpdb->usermeta} fname ON fname.user_id = {$wpdb->users}.ID AND fname.meta_key = 'nickname'";

// 设置可搜索的字段

$search_by = array( 'user_login', 'user_email', 'fname.meta_value' );

// 应用到搜索

$u_query->query_where = 'WHERE 1=1' . $u_query->get_search_sql( $search_query, $search_by, 'both' );

}

}

}

add_action('pre_user_query', 'wpkj_extend_user_search');

如果你想要加个备注,或者加个用户头衔,或者别的什么的,就可以用usermeta表。在key里面加上名字,比如touxian,然后直接根据userid为主键进行调用。

e087215ad177d15eafab1cccd2ed4f1f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值