我有一个3级的深度导航菜单,它将显示在除了主页以外的所有页面旁边。问题是,使用wp\\U nav\\U菜单显示时,菜单中仅显示了我的3个级别中的2个。我尝试过指定深度参数,但没有它也没有用。我正在使用Roots theme 如果有帮助的话。
有关菜单在“外观”>“菜单”部分中的显示方式,请参见下面的图像。
从上面可以看到的问题是,“生产解决方案”和“Avalanche”正在显示,但Avalanche下面的子项没有显示。而且它也不是一个样式化的东西,第三级也根本没有输出。我没有使用任何自定义Walker或任何东西,这是通过库存登记和显示导航菜单功能实现的。
This is the code that registers all of my nav menus:
register_nav_menus(array(
\'accordion_navigation\' => __(\'Page Accordion Navigation\', \'roots\'),
\'footer_navigation_left\' => __(\'Footer Navigation Left\', \'roots\'),
\'footer_navigation_solutions\' => __(\'Footer Product Solutions\', \'roots\'),
\'footer_navigation_news\' => __(\'Footer News & Events\', \'roots\'),
\'footer_navigation_about\' => __(\'Footer About\', \'roots\')
));
In my page template I have this code for displaying the menu:
wp_nav_menu(array(\'theme_location\' => \'accordion_navigation\'));
我错过什么了吗?
最合适的回答,由SO网友:Dwayne Charrington 整理而成
我最终解决了这个问题,这是因为根主题中的默认值覆盖了名为wp\\u nav\\u menu\\u args的钩子的深度参数(我甚至不知道是钩子)。代码可以在“inc”文件夹中主题的根目录中找到,这是一个名为root cleanup的文件。php。
The original code looks like this:
function roots_nav_menu_args($args = \'\') {
$args[\'container\'] = false;
$args[\'depth\'] = 2;
$args[\'items_wrap\'] = \'<ul class="nav">%3$s</ul>\';
if (!$args[\'walker\']) {
$args[\'walker\'] = new Roots_Nav_Walker();
}
return $args;
}
正如大家所看到的,深度值被设置为2,即使在wp\\u nav\\u菜单函数上指定一个深度参数似乎也没有什么不同,这个函数正是覆盖深度的菜单参数。
我所做的只是将深度增加到一个更高的值,我永远不会达到8,就像这样:
function roots_nav_menu_args($args = \'\') {
$args[\'container\'] = false;
$args[\'depth\'] = 8;
$args[\'items_wrap\'] = \'<ul class="nav">%3$s</ul>\';
if (!$args[\'walker\']) {
$args[\'walker\'] = new Roots_Nav_Walker();
}
return $args;
}
这里学到的教训是始终确保插件或主题框架挂钩不会改变某些东西。我希望这能帮助其他人使用根主题并尝试使用多级菜单。