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

如何在WordPress模板中获取顶部导航菜单的菜单项数组?

获取WordPress指定导航菜单的菜单项数组

嘿,这事儿其实挺简单的,WordPress专门提供了wp_get_nav_menu_items()函数来直接获取指定导航菜单的所有菜单项,不用费劲去翻header.php里的前端渲染代码。下面给你两种常用的实现方式:

方法一:直接通过菜单名称获取

如果确定你的菜单名称是TopMenu(就是后台Appearance->Menus里设置的那个菜单名称),直接用下面的代码就行:

// 获取名为"TopMenu"的导航菜单所有项
$top_menu_items = wp_get_nav_menu_items('TopMenu');

// 初始化数组来存储菜单项标题
$menu_title_array = [];

// 遍历提取标题(如果需要其他属性比如链接,也可以一起拿)
if (!empty($top_menu_items)) {
    foreach ($top_menu_items as $item) {
        $menu_title_array[] = $item->title;
        // 如果需要绑定标题和链接,可以这么存:$menu_title_array[$item->title] = $item->url;
    }
}

// 现在$menu_title_array就是你要的数组:['Home', 'About', 'Contact']

方法二:通过菜单位置获取(更稳妥)

有时候你可能不确定菜单的名称,或者主题是通过菜单位置来绑定菜单的(比如后台Appearance->Menus里的"Menu Settings"选择的位置),这时候可以用get_nav_menu_locations()先拿到对应位置的菜单ID,再获取菜单项:

// 获取所有已分配的菜单位置对应关系
$menu_locations = get_nav_menu_locations();

// 假设你的主题注册的顶部菜单位置叫'top_menu'(具体可以看主题functions.php里的register_nav_menus代码)
$top_menu_id = $menu_locations['top_menu'];

// 通过菜单ID获取菜单项
$top_menu_items = wp_get_nav_menu_items($top_menu_id);

// 后续提取标题的代码和方法一完全一样

补充说明

wp_get_nav_menu_items()返回的是一个WP_Post对象数组,每个对象里包含了菜单项的核心信息:

  • title:菜单项显示的文字
  • url:菜单项的链接地址
  • ID:菜单项的唯一ID
  • parent:父菜单项的ID(如果是二级菜单的话)
  • menu_order:菜单项的排序顺序

你可以根据自己的需求提取对应的属性,不一定只拿标题哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:32