根据用户角色修改WooCommerce我的账户标签名称
根据用户角色修改WooCommerce账户标签单复数
可以通过WooCommerce的woocommerce_account_menu_items钩子实现需求,核心逻辑是获取当前用户角色,根据角色权限替换对应账户标签的单复数文本。
示例代码
add_filter('woocommerce_account_menu_items', 'custom_account_label_by_user_role'); function custom_account_label_by_user_role($items) { // 未登录用户直接返回原菜单 if (!is_user_logged_in()) { return $items; } $current_user = wp_get_current_user(); $user_roles = $current_user->roles; // 替换成你实际的角色slug $single_product_roles = ['single_product_user']; $multiple_product_roles = ['wholesale_member', 'vip_customer']; // 替换成你要修改的账户菜单key(比如自定义的"我的产品"菜单key) $target_menu_key = 'my-products'; // 根据角色切换单复数标签 if (array_intersect($user_roles, $single_product_roles)) { $items[$target_menu_key] = '我的专属产品'; // 单数形式 } elseif (array_intersect($user_roles, $multiple_product_roles)) { $items[$target_menu_key] = '我的产品库'; // 复数形式 } return $items; }
代码说明
woocommerce_account_menu_items钩子用于过滤账户页面的菜单项数组,数组key是菜单标识,value是显示的标签文本。wp_get_current_user()获取当前登录用户对象,通过roles属性拿到用户所有角色。array_intersect()用于判断用户角色是否属于目标组,兼容用户拥有多个角色的场景。- 需根据实际情况调整:
$single_product_roles和$multiple_product_roles中的角色slug(比如默认角色是customer,自定义角色需用对应slug)。$target_menu_key要匹配你实际修改的账户菜单key(比如默认"订单"的key是orders)。- 单复数标签文本可自定义,比如单数用"我的专属产品",复数用"我的产品列表"。
注意事项
- 代码可添加到主题
functions.php文件,或用自定义代码插件(如Code Snippets)添加,避免主题更新丢失代码。 - 若用户同时属于多个角色组,代码会优先匹配
single_product_roles,可根据需求调整判断顺序。
内容的提问来源于stack exchange,提问作者user3438381
相关产品推荐
相关产品推荐

