答案-最终起作用的是:
$menuitems = wp_get_nav_menu_items(2);
foreach((array)$menuitems as $item) {
仅凭这个代码,我就可以获得导航菜单项。为了输出属性,我只做了一个这样的调用:
echo $item->url;
问题-
我不明白为什么我的代码:
<?php
$menu_name = 'main';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) );
?>
<nav>
<ul class="main-nav">
<?php
foreach( (array)$menuitems as $item ){
var_dump($item);
}
?>
</ul>
</nav>
输出这个并且仅输出这个:
bool(false)
我会理解上面的代码,以"main"的名称输出菜单中的每个项目。
我怎样才能做到这一点?为什么我得到这个输出?
如果返回false,则表示wp_get_nav_menu_items失败,很可能是因为没有菜单分配给"main"菜单位置,或者"main"不是菜单位置。请检查编码:
https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
我建议var_dump是$locations的结果,$menu,我认为$locations[$menu_name]应该已经得到了菜单的id,所以实际上不需要$menu=wp_get_nav_menu_object($locations$$menu_name])调用