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;
}
如果你需要去除“姓名”这一栏,在上面的第 7 行下面添加以下代码即可:
unset($columns['name']); //移除“姓名”这一栏
让后台用户列表支持搜索昵称
默认情况下,WordPress后台只能通过用户名、邮箱进行用户搜索,如果要通过昵称搜索,只需要添加下面的代码到主题的 functions.php 文件即可:
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');
拓展阅读:
- https://developer.wordpress.org/reference/hooks/manage_users_custom_column/
- https://developer.wordpress.org/reference/hooks/pre_user_query/
- https://rudrastyh.com/wordpress/pre_user_query.html
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
怎么把用户公开显示为默认为昵称,而不是用户名呢?
用户注册后不修改公开显示为昵称的话,回复显示是用户名啊
怎么换个列呢?比如放在电子邮件前一列?
喜欢折腾的孩纸有福了….