2017-09-03 161 views
0

我正在使用此代碼嘗試在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

你爲什麼從你的問題中刪除所有的代碼?這使得這個問題毫無用處。不要破壞你的問題! –

回答

0

看着你var_dump的上面,您的問題將出現在菜單中的名稱不存在幹...

$menu_name = 'main_nav';是不是存在的菜單名稱。

var_dump表明,存在的菜單名稱:primarymenu-1

更改$menu_name變量存在的菜單名稱。

相關問題