为什么输出菜单项会导致布尔输出?(WordPress)


Why outputting menu items results in boolean output? (WordPress)

答案-最终起作用的是:

$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])调用