我有一个主菜单和一个子页面菜单 - 请参见此处:http://www.healthwatchleicester.co.uk/newwebsite/find-services/您将看到左侧列中列出的主菜单项中的子元素作为子菜单。用于此的代码是:
<div class="sub-page-menu">
<div class="left-sidebar-title">
<h4>
<?php
echo empty( $post->post_parent ) ? get_the_title( $post->ID ) : get_the_title( $post->post_parent );
?>
</h4>
</div>
<?php
wp_nav_menu( array(
'theme_location' => 'primary',
'sub_menu' => true
) );
?>
</div>
这似乎有效,但如果它没有返回子项,我希望整个子菜单消失...
我发现这段代码看起来似乎正确,但我担心我不知道它是如何相关的,或者即使它是正确的......
<?php
$menu = wp_nav_menu(
array (
'echo' => FALSE,
'fallback_cb' => '__return_false'
)
);
if ( ! empty ( $menu ) )
{
echo '<div class="navmain2">' . $menu . '</div>';
}
?>
有人可以帮忙吗?
由于
答案 0 :(得分:1)
是的,所以这应该有效:
<div class="sub-page-menu">
<?php
$menu = wp_nav_menu(
array (
'echo' => FALSE,
'fallback_cb' => '__return_false'
)
);
if ( ! empty ( $menu ) )
{
?>
<!-- move anything else you need to hide between here -->
<div class="left-sidebar-title">
<h4>
<?php
echo empty( $post->post_parent ) ? get_the_title( $post->ID ) : get_the_title( $post->post_parent );
?>
</h4>
</div>
<!-- and here -->
<?php
echo $menu;
}
?>
</div>
答案 1 :(得分:1)
您还需要将第一个解决方案中的参数与您找到的解决方案合并:
$menu = wp_nav_menu(
array (
'theme_location' => 'primary',
'sub_menu' => true,
'echo' => FALSE,
'fallback_cb' => '__return_false'
)
);
if (!empty($menu)) {
// a menu exists, so output menu html
}
解释它的工作原理:
echo
参数设置为FALSE
会使wp_nav_menu
函数返回一个字符串。fallback_cb
设置为函数__return_false
会使wp_nav_menu
函数在主菜单不存在时不会回退到默认菜单。它应该返回一个falsey值(例如一个空字符串)。$menu
变量是假名,那么您就不需要输出任何内容。