You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:52:05