空时隐藏子菜单 - Wordpress

时间:2017-01-18 14:58:04

标签: php wordpress

我有一个主菜单和一个子页面菜单 - 请参见此处: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>';
}
?>

有人可以帮忙吗?

由于

2 个答案:

答案 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变量是假名,那么您就不需要输出任何内容。