如何在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:菜单项的唯一IDparent:父菜单项的ID(如果是二级菜单的话)menu_order:菜单项的排序顺序
你可以根据自己的需求提取对应的属性,不一定只拿标题哦~
内容的提问来源于stack exchange,提问作者codeNinja
相关产品推荐
相关产品推荐

