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

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

  1. /**
  2. * WordPress 后台用户列表显示用户昵称
  3. * https://www.wpdaxue.com/add-user-nickname-column.html
  4. */
  5. add_filter('manage_users_columns', 'add_user_nickname_column');
  6. function add_user_nickname_column($columns) {
  7. $columns['user_nickname'] = '昵称';
  8. return $columns;
  9. }
  10. add_action('manage_users_custom_column', 'show_user_nickname_column_content', 20, 3);
  11. function show_user_nickname_column_content($value, $column_name, $user_id) {
  12. $user = get_userdata( $user_id );
  13. $user_nickname = $user->nickname;
  14. if ( 'user_nickname' == $column_name )
  15. return $user_nickname;
  16. return $value;
  17. }

通过下列代码,可以实现取消掉“姓名"这一栏。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

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

如果想要使用昵称进行搜索(仅限后台),依然是在functions.php里加入代码:文章源自原紫番博客-https://www.yuanzifan.com/55489.html

这里需要注意的是,事实上这段代码调用了2张表,即wp_users和wp_usermeta。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

主要是因为用户昵称,是写在wp_usermeta表里的是meta_key对应的meta_value。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

而且有一个奇怪的问题是,在wp_user表里,昵称叫"nicename",在meta_value里,叫nickname。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

感觉像是一个历史遗留的笔误。不过到了今天这个模样,也没法改了。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

  1. function wpkj_extend_user_search( $u_query ){
  2. // 确保代码仅应用于用户搜索
  3. if ( $u_query->query_vars['search'] ){
  4. $search_query = trim( $u_query->query_vars['search'], '*' );
  5. if ( $_REQUEST['s'] == $search_query ){
  6. global $wpdb;
  7.  
  8. // 添加昵称搜索查询语句
  9. $u_query->query_from .= " JOIN {$wpdb->usermeta} fname ON fname.user_id = {$wpdb->users}.ID AND fname.meta_key = 'nickname'";
  10.  
  11. // 设置可搜索的字段
  12. $search_by = array( 'user_login', 'user_email', 'fname.meta_value' );
  13.  
  14. // 应用到搜索
  15. $u_query->query_where = 'WHERE 1=1' . $u_query->get_search_sql( $search_query, $search_by, 'both' );
  16. }
  17. }
  18. }
  19. add_action('pre_user_query', 'wpkj_extend_user_search');

如果你想要加个备注,或者加个用户头衔,或者别的什么的,就可以用usermeta表。在key里面加上名字,比如touxian,然后直接根据userid为主键进行调用。文章源自原紫番博客-https://www.yuanzifan.com/55489.html

文章源自原紫番博客-https://www.yuanzifan.com/55489.html 文章源自原紫番博客-https://www.yuanzifan.com/55489.html

站长微信
扫码添加(注明来意)
weinxin
Yuanzifan99
原梓番博客公众号
博客内容精选
weinxin
原梓番博客
 

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证
加载失败