循环导航项目时为foreach()提供的参数无效

问题描述:

我正在使用此代码尝试在WordPress中生成自定义导航结构,但我遇到了for循环的问题。 WordPress的告诉我,$menuitems不是数组:循环导航项目时为foreach()提供的参数无效

<?php 
    $menu_name = 'main_nav'; 
    $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 class="main-navigation col-md-8 col-sm-8"> 
<ul class="main-nav"> 
    <?php 
    $count = 0; 
    $submenu = false; 
    foreach($menuitems as $item): 
     $link = $item->url; 
     $title = $item->title; 
     // item does not have a parent so menu_item_parent equals 0 (false) 
     if (!$item->menu_item_parent): 
     // save this id for later comparison with sub-menu items 
     $parent_id = $item->ID; 
    ?> 

    <li class="item"> 
     <a href="<?php echo $link; ?>" class="title"> 
      <?php echo $title; ?> 
     </a> 
    <?php endif; ?> 

     <?php if ($parent_id == $item->menu_item_parent): ?> 

      <?php if (!$submenu): $submenu = true; ?> 
      <ul class="sub-menu"> 
      <?php endif; ?> 

       <li class="item"> 
        <a href="<?php echo $link; ?>" class="title"><?php echo $title; ?></a> 
       </li> 

      <?php if ($menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu): ?> 
      </ul> 
      <?php $submenu = false; endif; ?> 

     <?php endif; ?> 

    <?php if ($menuitems[ $count + 1 ]->menu_item_parent != $parent_id): ?> 
    </li>       
    <?php $submenu = false; endif; ?> 

<?php $count++; endforeach; ?> 

</ul> 
</nav> 

但我得到的Warning: Invalid argument supplied for foreach()从未来的for循环。

以下为var_dump($locations)var_dump($menu)var_dump($menuitems)输出:

array(2) { 
    ["primary"]=> 
    int(15) 
    ["menu-1"]=> 
    int(15) 
} 
bool(false) 
bool(false) 
+0

从功能的文件,这应该工作。你可以包含'var_dump($ locations)','var_dump($ menu)'和'var_dump($ menuitems)'的输出' – Junaid

+1

你为什么从你的问题中删除所有的代码?这使得这个问题毫无用处。不要破坏你的问题! –

看着你var_dump的上面,您的问题将出现在菜单中的名称不存在干...

$menu_name = 'main_nav';是不是存在的菜单名称。

var_dump表明,存在的菜单名称:primarymenu-1

更改$menu_name变量存在的菜单名称。