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

WordPress Astra主题设置登录/登出用户不同头部菜单且不影响底部菜单

问题原因

你当前使用的wp_nav_menu_args过滤器未限制作用范围,会全局作用于站点所有导航菜单,因此底部菜单也被强制替换为了头部的登录态匹配菜单。

修复方案

Astra主题默认的头部主菜单有单独的位置标识primary,只需要在过滤逻辑中新增位置判断,仅修改对应头部菜单的配置即可,修改后代码如下:

function wpc_wp_nav_menu_args( $args = '' ) {
    // 仅匹配Astra头部主菜单的位置标识,不对其他菜单生效
    if ( $args['theme_location'] === 'primary' ) {
        if( is_user_logged_in() ) { 
            // 注:原代码逻辑为登录用户显示logged-out菜单,若不符合需求可自行调整为登录后对应的菜单名
            $args['menu'] = 'logged-out';
        } else { 
            $args['menu'] = 'Main Menu';
        } 
    }
    return $args;
}
add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' );

如果你的头部菜单使用的不是默认的主菜单位置,可以进入 WordPress 后台「外观-菜单」页面,切换到「管理位置」标签,查看头部菜单对应的位置标识,替换代码中的primary即可。

其他可选方案

如果不想写代码,也可以安装支持菜单按登录状态显示的WordPress扩展插件,在后台可视化设置每个菜单项的可见范围,不需要修改主题文件。

提示:修改主题functions.php前建议提前备份文件,优先使用子主题的functions.php存放自定义代码,避免主题更新后自定义代码被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:39:05