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

WordPress中如何仅向指定导航菜单添加自定义导航项

问题根源

你当前挂载的wp_nav_menu_items过滤器没有做菜单范围判定,默认会作用于站点所有前台渲染的导航菜单,所以自定义项会出现在全部菜单里。

具体修改步骤

只需要调整代码即可实现仅主导航生效:

  • 给回调函数add_last_nav_item增加第二个入参$args,该参数存储当前正在渲染的菜单的配置信息,可用来识别菜单位置
  • 在回调内部增加判定逻辑:仅当当前菜单的主题位置标识为primary(即常规主题注册主导航的默认slug,如果你用的主题主导航slug不同,替换为对应值即可)时,才追加自定义菜单项,其余菜单直接返回原有菜单项
  • 调用add_filter挂载过滤器时,声明回调接收2个参数——WordPress的过滤器默认只向回调传递1个参数,不手动声明的话拿不到$args参数
修正后完整代码
if ( wp_is_mobile() ) {
    function add_last_nav_item($items, $args) {
        // 限定仅主导航追加自定义项
        if ( $args->theme_location === 'primary' ) {
            $items .= '<li class="text-center"><a href="#myModal" role="button" data-toggle="modal">TEST</a></li>';
        }
        return $items;
    }
    // 第三个参数10是默认优先级,第四个参数2声明回调接收2个入参
    add_filter( 'wp_nav_menu_items', 'add_last_nav_item', 10, 2 );
}

补充说明:如果加完代码主导航里没出现自定义项,说明你当前主题注册的主导航位置slug不是默认的primary,可以去主题注册导航菜单的代码里找到主导航对应的theme_location值替换即可,部分主题会用main_menu、primary_nav这类slug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:21:25