web-dev-qa-db-fra.com

Masquer la division principale si wp_nav_menu est vide

Je veux cacher la classe div "navmain2" si le menu est vide. Voir le code ci-dessous:

<!-- 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 -->-->

J'ai un logo et une div avec le texte à l'intérieur navmain2 comme vous pouvez le voir.

La question est:

Est-il possible de cacher toute la div navmain2 si le wp_nav_menu est vide?

6
M3o

Attribuer le menu à une chaîne:

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

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

Si vous voulez vérifier qu'un menu est assigné, vous pouvez utiliser has_nav_menu () . En passant par l'ID de menu enregistré comme enregistré via register_nav_menu ()

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

    <div class="navmain2">

    </div>

 <?php }

Remarque: Cette fonction affichera le div si l'emplacement primary a un menu attribué, elle affichera également le div si le menu est assigné et vide.

2
Ilias Benetos

Solution n ° 2:

Est de cacher la div à travers Js.

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