2017-09-03 18 views
0

このコードを使用してWordPress内でカスタムナビゲーション構造を生成しようとしていますが、forループに関する問題が発生しています。 WordPressは$menuitemsが配列でないことを私に語っている:nav項目をループするときに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> 

しかし、私は、forループから来るWarning: Invalid argument supplied for foreach()を取得します。ここで

var_dump($locations)var_dump($menu)var_dump($menuitems)の出力です:

上記のご var_dump年代を見ると
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

、あなたの問題は存在しないメニュー名に由来するように見える...

$menu_name = 'main_nav';です存在するメニュー名ではありません。 primarymenu-1

変更存在するメニュー名に$menu_name変数:

あなたvar_dumpが存在し、メニュー名があることを示しています。

関連する問題