web-dev-qa-db-ja.com

Wp_nav_menuが空の場合はメインdivを非表示

メニューが空の場合はdivクラス "navmain2"を隠したい。以下のコードを参照してください。

<!-- Start main navigation -->

<div class="navmain2">
    <div id="logo"></div>

    <!-- Gets main menu by id -->
    <span></span>
    <?php
        wp_nav_menu( array(
            'menu' => 11,
            'container' =>false,
            'menu_class' => 'nav',
            'echo' => true,
            'before' => '',
            'after' => '',
            'link_before' => '',
            'link_after' => '',
            'depth' => 0,
            'walker' => new description_walker())
        );
    ?>
    <!-- /main menu -->

    <div id="klicka">Click here! Click here! Click here</div>
</div><!-- /main navigation -->-->

ご覧のとおり、 navmain2 の中にテキストとロゴとdivがあります。

問題は次のとおりです。

wp_nav_menuが空の場合、navmain2 div全体を非表示にすることは可能ですか?

6
M3o

メニューを文字列に割り当てます。

$menu = wp_nav_menu(
    array (
        'echo' => FALSE,
        'fallback_cb' => '__return_false'
    )
);

if ( ! empty ( $menu ) )
{
    echo '<div class="navmain2">' . $menu . '</div>';
}
8
fuxia

メニューが割り当てられていることを確認したい場合は、 has_nav_menu() を使用できます。 register_nav_menu()を介して登録されている登録済みメニューIDを通過させる

 <?php if ( has_nav_menu( 'primary' ) ) { ?>

    <div class="navmain2">

    </div>

 <?php }

注:この関数は、位置primaryにメニューが割り当てられている場合はdivを出力し、メニューが割り当てられていて空の場合はdivも出力します。

2
Ilias Benetos

ソリューション番号2:

Jsでdivを隠すことです。

$('#jqm-home').live("pagecreate", function () {
    $(".navmain2").each(function () {
        if ($(this).children("ul").length == 0) {
            $(this).hide();
        }
    });
}); 
0
M3o