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)
関数のドキュメントから、これはうまくいくはずです。 'var_dump($ locations)'、 'var_dump($ menu)'、 'var_dump($ menuitems)'の出力を含めることができます – Junaid
質問からすべてのコードを削除したのはなぜですか?それはこの質問を役に立たなくします。あなたの質問を荒らさないでください! –