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

如何在WordPress自定义模板中动态获取菜单?

关于动态获取WordPress菜单的解决方案

我来帮你搞定动态获取菜单的问题~ 先看你给出的代码,这里有个小细节需要调整,我给你拆解下:

你当前的代码同时用了theme_location和menu两个参数,这俩其实是互斥的——theme_location是调用你在主题里注册的导航位置对应的菜单,而menu是直接指定某个具体菜单的名称/ID/slug。同时用的话,WordPress会优先认menu参数,这就没法实现“动态切换”的效果了。

给你两种正确的用法,按需选择:

1. 用主题位置调用(推荐,真正实现动态切换)

这种方式是最符合“动态获取”需求的,你可以在后台随时更换对应位置的菜单,不用改代码:

<?php
// 先确认你的主题已经在functions.php里注册了primary这个导航位置(如果没注册的话加上这段)
// register_nav_menus( array(
//     'primary' => __( '主导航菜单', '你的主题文本域' ),
// ) );

// 调用指定主题位置的菜单
wp_nav_menu( array(
    'theme_location' => 'primary',
    'menu_class'     => 'nav navbar-nav',
) );
?>

说明:注册完导航位置后,你去WordPress后台「外观」→「菜单」,就能把任意已创建的菜单分配到primary位置,前端会自动同步显示最新的菜单内容。

2. 直接指定具体菜单(适合固定调用某一个菜单的场景)

如果你确定就要调用名为tahrid的菜单,那可以去掉theme_location参数,只保留menu:

<?php
wp_nav_menu( array(
    'menu'        => 'tahrid', // 支持菜单名称、ID或slug
    'menu_class'  => 'nav navbar-nav',
) );
?>

说明:这种方式会直接调用你后台创建的tahrid菜单,不管它有没有分配到主题导航位置。

额外注意点

  • 不管用哪种方式,都要确保你在后台已经创建了对应的菜单,并且添加了菜单项,不然前端可能显示空菜单或者默认的菜单提示。
  • 如果用主题位置的方式,一定要先在functions.php里注册对应的位置,不然WordPress会 fallback 到默认菜单(如果有的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:42:58