如何在WordPress中将默认显示名称设置为username(代码不生效求助)
问题修复方案
你提供的代码失效主要有3个核心原因:
- 代码中使用了中文弯引号(
‘/’),PHP和WordPress仅识别英文半角单引号 get_userdata()返回的用户对象里,用户名字段的属性名为user_login,你误写为username导致取值为空- 未指定钩子优先级,如果你启用的会员/论坛插件也绑定了
user_register钩子修改用户信息,你的逻辑会被插件逻辑覆盖
修复后可直接使用的代码
function change_display_name_to_username( $user_id ) { $user_info = get_userdata( $user_id ); // 增加校验避免异常 if ( ! $user_info ) { return; } $update_args = array( 'ID' => $user_id, 'display_name' => $user_info->user_login ); wp_update_user( $update_args ); } // 优先级设为999,确保晚于其他插件的注册逻辑执行,不会被覆盖 add_action( 'user_register', 'change_display_name_to_username', 999 );
额外使用说明
- 代码请放在当前激活主题的
functions.php文件末尾,或自定义代码片段插件中,不要修改WordPress核心文件 - 该代码仅对新注册用户生效,已经注册的存量用户可以执行SQL批量更新:
UPDATE wp_users SET display_name = user_login;,注意将wp_替换为你自己的数据库表前缀 - 测试时请使用无痕窗口走新用户注册流程,避免管理员账号缓存导致效果验证错误
内容的提问来源于stack exchange,提问作者DaveyBear
相关产品推荐
相关产品推荐

