为什么 wp_nav_menu 没有按正确的顺序检索菜单?

Why wp_nav_menu does not retrieve menu in correct order?

我正在尝试使用以下代码在 header.php 上拉出菜单:

wp_nav_menu( array(
    'theme_location' => 'main-menu',
    'menu_id' => 'main-menu',
) );

并且在我的管理员登录外观 > 菜单中,main-menu 的顺序如下:

Home
About
Tours
Pages
   Contact Us
   Help Desk
   Gallery
Destinations
Blog
Booking

但在header中,顺序是混乱的,甚至不显示子菜单。 在 header

上订购
About
Pages
Tours
Booking
Home
Blog
Destinations

帮帮我!我什至尝试使用 order_by/sort_column,它们对我不起作用。

如果您从头开始开发主题,请添加以下内容作为数组的索引

'orderby' => 'menu_order' 

会像下面这样

wp_nav_menu( array(
    'theme_location' => 'main-menu',
    'orderby' => 'menu_order'
    'menu_id' => 'main-menu',
) );

如果您正在处理已经开发好的它们,那么问题出在数组的 'theme_location' 索引上,因此将其更改为 'theme_location' => 'primary' 它将如下所示:

wp_nav_menu( array(
    'theme_location' => 'primary',
    'menu_id' => 'main-menu',
) );

我想下面的代码就是您要找的。 添加你的 Menu Name 而不是 'Main menu'

<?php
    $main_menu = wp_get_nav_menu_items('Main menu');
    $customize_arr = array();
    if(!empty($main_menu)){
        foreach($main_menu as $mm){
            $mm = (array) $mm;
            if($mm['menu_item_parent'] == 0){
                foreach($main_menu as $sm){
                    $sm = (array) $sm;
                    if($mm['ID'] == $sm['menu_item_parent']){
                        (array)$mm['submenu'][] = $sm;
                    }
                }
                $customize_array[] = $mm;
            }
        }
    }
?>

$customize_array 你会得到所有 menussub-menu 你只需要做 foreach 循环您的 html 代码。

100% 工作代码..希望代码对您有所帮助!