news 2026/7/6 9:38:26

为不同的wordpress页面调用不同的顶部菜单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为不同的wordpress页面调用不同的顶部菜单

下面给出 4 种在 WordPress 里“让不同页面(或不同模板、不同文章类型)调用不同顶部菜单”的常用做法,从最轻量到最灵活依次排列。你可以按自己熟悉程度与项目复杂度任选其一,也可以组合使用。

一、纯后台设置:利用「菜单位置 + 条件挂钩」(无需写代码,适合只有 2-3 套菜单的小站点)

在「外观 → 菜单」里把菜单 A 设为 primary,菜单 B 设为 secondary(多主题可能叫 top / header / mobile 等)。

安装插件「Conditional Menus」(免费,无设置页)。

进入「外观 → 菜单 → Manage Locations」标签页,你会看到每个菜单位置右侧多了一个 «Conditional Menu» 下拉框。

给 primary 位置先选「菜单 B」

点击 «+ Conditions»,在弹窗里勾选

– 首页:Home

– 某分类:Category → Products

– 某页面:Page → Contact

保存即可。

逻辑:插件会在 wp_nav_menu_args 钩子内,按你设定的条件实时把菜单 slug 换掉,性能影响几乎为 0,且升级主题不会丢。

二、主题自带「页面级菜单」字段(部分商业主题/页面构建器已集成,最直观)

编辑页面 → 找到「Page Settings / Theme Options」面板 → 下拉「Custom Header Menu」。

选想要的菜单 → 更新。

主题作者在 header.php(或相应模板)里已预埋代码,大致如下:

$custom_menu = get_post_meta( $post->ID, '_custom_top_menu', true ); wp_nav_menu( array( 'menu' => $custom_menu ? $custom_custom : 'primary', 'container' => 'nav', 'container_class' => 'top-nav' ) );

如果你用的主题没这功能,可以自己把上面代码放进 header.php,再配合下文「三」的高级做法,把 _custom_top_menu 做成下拉选单即可。

三、在子主题里用 filter 动态替换(推荐,代码量极少、可控、可版本管理)

给 functions.php 加一段:

/** * 根据不同条件返回不同菜单 * @param array $args wp_nav_menu 原始参数 * @return array */ function my_conditional_nav_menu( $args ) { // 只动 primary 位置,其它位置原样返回 if ( 'primary' !== $args['theme_location'] ) { return $args; } // 1. 首页单独菜单 if ( is_front_page() ) { $args['menu'] = 'home-menu'; // 菜单别名(slug) } // 2.「产品」分类及其下属文章 elseif ( is_tax( 'product_cat' ) || is_singular( 'product' ) ) { $args['menu'] = 'product-menu'; } // 3. ID 为 42 的页面 elseif ( is_page( 42 ) ) { $args['menu'] = 'landing-menu'; } // 4. 默认 fallback else { $args['menu'] = 'primary-menu'; } return $args; } add_filter( 'wp_nav_menu_args', 'my_conditional_nav_menu' );

把需要的菜单先建好,记下「菜单别名」填到代码里即可。

性能:只在调用 wp_nav_menu() 时触发一次过滤,几乎无额外查询。

维护:升级主题只要子主题还在就安全;换主题也只需把 ‘primary’ 改成新主题的 location 名称。

四、完全自定义:新建 Page Template + 新 Menu Location (适合「同一站点不同频道」型项目,如 官网/B2B/B2C 三合一)

注册新菜单位置(functions.php):

add_action( 'after_setup_theme', function () { register_nav_menus( array( 'primary' => '主站菜单', 'corporate' => '企业频道菜单', 'shop' => '商城频道菜单', ) ); } );

新建页面模板 template-corporate.php,在文件头部声明:

<?php /** * Template Name: 企业频道 */ get_header( 'corporate' ); // 自动加载 header-corporate.php

复制一份 header-corporate.php,把里面的

wp_nav_menu( array( 'theme_location' => 'corporate' ) );

换成刚注册的 corporate 位置。

4. 后台「外观 → 菜单」里给 corporate 位置分配菜单;发布页面时选「企业频道」模板即可。

5. 优势:每套频道可以有独立的 header/footer/sidebar,菜单只是其中一部分;后期还可以配独立样式表与脚本。

常见坑 & 调试技巧

缓存:用了页面缓存插件(WP Rocket、LiteSpeed Cache)记得把「菜单」从缓存中排除,或给不同页面打不同缓存标签。

多语言:WPML/Polylang 会给每种语言生成独立菜单,记得在条件判断里加 ICL_LANGUAGE_CODE 或 pll_current_language()。

移动端:检查主题是否对「Mobile Menu」另外写了 walker,必要时把上面的 filter 同样应用到 mobile 位置。

菜单找不到:确认填的是「菜单别名」而不是标题;别名在「外观 → 菜单 → 编辑」里展开「菜单设置」可见。

一句话总结

只想「某几个页面换个菜单」→ 装 Conditional Menus 最快;

想代码干净、可 Git 管理 → 用子主题 + wp_nav_menu_args filter;

要做「多频道」大站 → 注册新菜单位置 + 多套 header 模板最清晰。

照着上面 4 种方案任选其一,10 分钟内就能把「不同页面不同顶部菜单」跑通。

原文

http://wordpress.zj.cn/jiaocheng/48.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 8:43:53

安捷伦53210A 53220A 53230A频率计数器

型号 53210A 53220A 53230A 类型 1 通道; 可选射频通道 2 通用通道; 可选射频通道 测量 频率、频率比、周期、输入电压最大值/最小值/峰峰值 时间间隔、上升/下降时间、信号周期、脉冲宽度、占空比、相位、累加 时间戳/MDA 分析 运算: 平滑 (读数移动平均数)、定标、Δ 变化、空…

作者头像 李华
网站建设 2026/7/5 12:47:51

2026毕设ssm+vue基于的在线考试系统设计论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 关于“毕业设计全过程管理”问题的研究&#xff0c;现有研究主要以“结果式”论文质量评价或单一环节信息化为主&#xff0c;…

作者头像 李华
网站建设 2026/7/5 3:44:43

5个关键步骤实现Label Studio Docker部署:告别环境配置困扰

5个关键步骤实现Label Studio Docker部署&#xff1a;告别环境配置困扰 【免费下载链接】label-studio 项目地址: https://gitcode.com/gh_mirrors/lab/label-studio 在人工智能项目的数据标注环节&#xff0c;团队协作和环境一致性是影响效率的关键因素。Label Studio…

作者头像 李华
网站建设 2026/6/30 21:25:21

嵌入式软件自学:单片机/C语言 五大区(专栏长期持续更新)

嵌入式软件核心&#xff1a;单片机/C语言五大内存区全解析&#xff08;原理、布局与实战&#xff09; 聚焦嵌入式内存管理落地与故障解决 一、核心认知&#xff1a;五大内存区的定位与核心价值 单片机运行C语言程序时&#xff0c;内存&#xff08;FlashRAM&#xff09;会被划分…

作者头像 李华
网站建设 2026/7/6 3:38:44

企业级云服务器部署应优先选择RHEL系还是Debian系操作系统?

企业级云服务器部署中&#xff0c;RHEL系&#xff08;如 RHEL、Rocky Linux、AlmaLinux&#xff09;通常更适合作为首选&#xff0c;但需结合具体场景权衡&#xff1b;Debian/Ubuntu LTS 在特定领域&#xff08;如云原生、开发友好性、成本敏感型场景&#xff09;同样具备强大竞…

作者头像 李华
网站建设 2026/7/4 14:48:03

如何快速掌握Java Excel处理:开发者的终极指南

如何快速掌握Java Excel处理&#xff1a;开发者的终极指南 【免费下载链接】fastexcel easyexcel作者最新升级版本&#xff0c; 快速、简洁、解决大文件内存溢出的java处理Excel工具 项目地址: https://gitcode.com/gh_mirrors/fast/fastexcel 在当今数据驱动的商业环境…

作者头像 李华