如何修改代码在WooCommerce我的账户页显示用户角色名称
如何在WooCommerce我的账户页面显示用户角色名称而非角色ID
没问题,我帮你调整代码——你当前的代码只是取出了角色的slug(也就是你说的角色ID),要显示友好的角色名称,我们需要调用WordPress内置的角色对象来获取对应的显示名称。
原代码的问题
你之前的get_user_role()函数里,array_shift($user_roles)拿到的是角色的标识slug(比如customer、shop_manager这类),而不是面向用户的友好名称(比如“普通客户”“店铺管理员”)。
修改后的完整代码
替换你原来的函数,用这个版本来获取角色名称:
function get_user_role_name() { global $current_user; // 容错处理:如果用户没有分配任何角色,返回提示文本 if (empty($current_user->roles)) { return __('未分配角色', 'your-text-domain'); } // 获取用户的角色slug $user_role_slug = array_shift($current_user->roles); // 调用WordPress内置的角色对象 $wp_roles = wp_roles(); // 检查角色是否存在,存在则返回显示名称 if (isset($wp_roles->roles[$user_role_slug]['name'])) { return $wp_roles->roles[$user_role_slug]['name']; } // 兜底:如果找不到对应名称,返回角色slug避免空白 return $user_role_slug; }
如何在我的账户页面显示
你可以通过钩子直接把角色名称添加到我的账户页面的欢迎区域,比如在functions.php里再加这段代码:
// 将角色名称添加到WooCommerce我的账户页面顶部 add_action('woocommerce_before_my_account', 'display_user_role_in_account'); function display_user_role_in_account() { $role_name = get_user_role_name(); // 输出带样式的角色信息,你可以调整HTML和文本 echo '<p style="margin-bottom:1rem; color:#666;">' . sprintf(__('您的用户角色:%s', 'your-text-domain'), $role_name) . '</p>'; }
关键说明
wp_roles()是WordPress核心函数,会返回所有注册角色的详细信息,包括显示名称- 加入了容错逻辑,避免用户无角色或者角色不存在时出现报错
- 把
your-text-domain替换成你主题的文本域,方便后续做多语言翻译
内容的提问来源于stack exchange,提问作者Max Alexev
相关产品推荐
相关产品推荐

