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

WooCommerce中已登录用户时修改账户菜单文字的实现方法

自定义WooCommerce二级菜单"My Account"文字(登录状态切换)

嘿,刚好能帮你搞定这个需求!不用新建菜单也不用装插件,咱们直接用子主题的代码就能实现。

核心思路是定位到你指定的二级菜单,遍历找到"My Account"菜单项,根据用户登录状态替换显示文字,具体代码如下,你直接复制到Storefront子主题的functions.php文件里就行:

function modify_my_account_menu_text( $items, $args ) {
    // 精准匹配目标菜单的标识(自动转成WordPress标准的slug格式)
    if ( 'desktop-secondary-top-right-en' === sanitize_title( $args->theme_location ) ) {
        // 遍历所有菜单项,找到我们要修改的"My Account"
        foreach ( $items as &$item ) {
            // 统一转小写比较,避免大小写不匹配的问题
            if ( 'my account' === strtolower( $item->title ) ) {
                if ( is_user_logged_in() ) {
                    // 这里替换成你想要的登录后显示的文字,比如"Your Account"
                    $item->title = __( 'Your Account', 'storefront-child' );
                }
                // 未登录状态保持原文字,所以不用额外处理
                break; // 找到目标项就退出循环,节省资源
            }
        }
    }
    return $items;
}

// 注册针对目标菜单的过滤器
$menu_filter = 'wp_nav_menu_' . sanitize_title( "Desktop secondary top right EN" ) . '_items';
add_filter( $menu_filter, 'modify_my_account_menu_text', 20, 2 );

几个关键细节说明:

  • 菜单匹配:用sanitize_title把你的菜单名转成WordPress标准的slug格式,确保只修改你指定的"Desktop secondary top right EN"菜单,不会影响其他菜单
  • 文字匹配:用strtolower统一转小写比较,不管你后台菜单里的"My Account"是大写开头还是全小写,都能精准匹配
  • 翻译支持:用__()函数包裹新文字,如果你需要做多语言,直接在子主题的语言文件里添加翻译即可;不需要翻译的话,直接写成$item->title = 'Your Account';就行
  • 优先级:把过滤器优先级设为20,确保在其他可能的菜单修改逻辑之后执行,保证你的修改能生效

注意事项:

  • 一定要放到子主题的functions.php里,别改父主题的文件,不然WooCommerce或Storefront更新后你的修改就丢失了
  • 确认后台菜单里的"My Account"文字和代码里的匹配逻辑一致,比如如果后台是"My Account"(首字母大写),代码里的strtolower处理后是"my account",完全匹配

内容的提问来源于stack exchange,提问作者Louis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:52:31