循环导航项目时为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)
答
看着你var_dump
的上面,您的问题将出现在菜单中的名称不存在干...
$menu_name = 'main_nav';
是不是存在的菜单名称。
你var_dump
表明,存在的菜单名称:primary
和menu-1
更改$menu_name
变量存在的菜单名称。
从功能的文件,这应该工作。你可以包含'var_dump($ locations)','var_dump($ menu)'和'var_dump($ menuitems)'的输出' – Junaid
你为什么从你的问题中删除所有的代码?这使得这个问题毫无用处。不要破坏你的问题! –