WordPress中强制将用户名字设为显示名的解决方案求助
解决方案:强制将用户名字(First Name)设为显示名(Display Name)
直接修改代码,只保留名字作为显示名,同时处理名字为空的 fallback 逻辑,修正原代码里的变量错误:
add_action('admin_head', 'make_display_name_first_name'); function make_display_name_first_name() { $users = get_users(array('fields' => 'all')); foreach ($users as $user) { $user_data = get_userdata($user->ID); // 直接使用First Name作为显示名 $display_name = $user_data->first_name; // 确定最终的显示名:名字为空则用登录名 $final_display_name = !empty($display_name) ? $display_name : $user_data->user_login; // 更新用户显示名 wp_update_user(array( 'ID' => $user_data->ID, 'display_name' => $final_display_name )); } }
关键改动说明:
- 移除了姓氏拼接逻辑,直接将
$display_name赋值为$user_data->first_name - 修正原代码中
$user->display_login的错误,WordPress用户对象的登录名字段是user_login - 简化空值判断逻辑,用三元运算符一次性确定最终显示名,避免重复调用更新函数
- 重命名函数为更贴合功能的
make_display_name_first_name,提升可读性
如果需要让这个逻辑在用户注册时自动生效(而不是仅在后台头部执行),可以把钩子换成user_register,针对新用户实时设置:
add_action('user_register', 'set_display_name_to_first_name_on_register'); function set_display_name_to_first_name_on_register($user_id) { $user_data = get_userdata($user_id); $display_name = $user_data->first_name; $final_display_name = !empty($display_name) ? $display_name : $user_data->user_login; wp_update_user(array( 'ID' => $user_id, 'display_name' => $final_display_name )); }
内容的提问来源于stack exchange,提问作者DaveyBear
相关产品推荐
相关产品推荐

