如何在Ultimate Membership Pro注册验证中显示已占用用户名的用户全名
解决Ultimate Membership Pro用户名验证提示显示用户全名的问题
你已经通过get_user_by('login', $value)拿到了对应的WP_User对象,但之前只调用了用户ID,其实WordPress的用户对象自带first_name和last_name属性,我们可以直接用这些属性组合成全名,同时处理用户未填写名/姓的情况,避免提示出现空白。
修改后的核心代码片段
替换你当前case 'user_login'区块内的相关代码即可:
case 'user_login': if (!validate_username($value)){ $return = $register_msg['ihc_register_error_username_msg']; } if (username_exists($value)) { // 获取目标用户的完整对象 $target_user = get_user_by('login', $value); // 组合全名:优先使用名+姓,若为空则用用户名兜底 $full_name = trim($target_user->first_name . ' ' . $target_user->last_name); if (empty($full_name)) { $full_name = $target_user->user_login; } // 生成自定义提示信息 $return = sprintf('此用户名已被%s占用', $full_name); // 如果你想保留插件原有提示模板,也可以这样做(先把原提示改成带占位符的格式,比如"此用户名已被{FULL_NAME}占用"): // $return = str_replace('{FULL_NAME}', $full_name, $register_msg['ihc_register_username_taken_msg']); } break;
关键细节说明
$target_user->first_name和$target_user->last_name:这两个是WordPress默认用户资料里的名、姓字段,直接从用户对象读取即可。- 空值兜底逻辑:有些用户可能没填写名或姓,这时候用用户名替代,保证提示信息始终完整。
- 模板化提示(可选):如果不想硬编码提示文案,可以修改插件的默认提示为带占位符的格式,再用
str_replace替换,这样后续修改文案更方便。
重要提醒
直接修改插件核心文件(比如indeed-membership-pro.php)不是长久之计,插件更新时你的修改会被覆盖。如果想长期保留这个功能,建议:
- 查看插件是否提供了验证提示的过滤钩子,用钩子修改输出;
- 或者在主题的
functions.php里重写这个验证函数(如果插件允许的话); - 最稳妥的方式是创建一个简单的自定义插件来实现这个逻辑。
内容的提问来源于stack exchange,提问作者Olumide Ayeni
相关产品推荐
相关产品推荐

