web-dev-qa-db-fra.com

Afficher différents menus personnalisés sur différentes pages de catégorie

J'utilisais la fonction in_category pour afficher un ensemble de menus dans la barre latérale. Cependant, une meilleure solution consisterait à afficher ce menu en haut, sous forme de menu de navigation - sous la forme de menus personnalisés.

Question:

J'ai déjà un menu personnalisé, mais y a-t-il un moyen de remplacer ce menu personnalisé par un autre lorsqu'un lecteur visite un message d'une catégorie particulière?

Exemple:

Sur la page d'accueil, voici le menu:

Accueil | Chat | Chien

Sur un article étiqueté avec la catégorie CAT, voici le menu:

Accueil | Cat 1 | Cat 2

De ma compréhension, ceci est le code actuel:

if ( function_exists('wp_nav_menu') ) {
add_theme_support( 'nav-menus' );
register_nav_menus( array( 'primary-menu' => __( 'Primary Menu', 'woothemes' ) )    );
register_nav_menus( array( 'top-menu' => __( 'Top Menu', 'woothemes' ) ) );
}

Et...

<?php
if ( function_exists( 'has_nav_menu' ) && has_nav_menu( 'primary-menu' ) ) {
    echo '<h3>' . woo_get_menu_name( 'primary-menu' ) . '</h3>';
    wp_nav_menu( array( 'sort_column' => 'menu_order', 'container' => 'ul', 'menu_id' => 'main-nav', 'menu_class' => 'nav fl', 'theme_location' => 'primary-menu' ) );
} else {
?>
    <ul id="main-nav" class="nav fl">
        <?php
        if ( get_option( 'woo_custom_nav_menu' ) == 'true' ) {
            if ( function_exists( 'woo_custom_navigation_output' ) ) { woo_custom_navigation_output( 'name=Woo Menu 1' ); }
        } else { ?>

            <?php if ( is_page() ) { $highlight = 'page_item'; } else { $highlight = 'page_item current_page_item'; } ?>
            <li class="<?php echo esc_attr( $highlight ); ?>"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php _e( 'Home', 'woothemes' ); ?></a></li>
            <?php wp_list_pages( 'sort_column=menu_order&depth=6&title_li=&exclude=' ); ?>
        <?php } ?>
    </ul><!-- /#nav -->
<?php } ?>
</section><!-- /.menus -->
1
Sid

Ajouter un nouveau menu appelé category-menu:

if( function_exists( 'wp_nav_menu' ) ) 
{
    add_theme_support( 'nav-menus' );

    register_nav_menus( array( 
        'primary-menu' => __( 'Primary Menu', 'woothemes' ) 
    ));

    register_nav_menus( array( 
        'top-menu' => __( 'Top Menu', 'woothemes' ) 
    ));

    register_nav_menus( array( 
        'category-menu' => __( 'Category Menu', 'woothemes' ) 
    ));
}

Et le sortir avec le conditionnel is_category () :

if( function_exists( 'has_nav_menu' ) && has_nav_menu( 'primary-menu' ) ) 
{
    // On category 'Cheese'
    if( is_category( 'Cheese' ) )
    {
        echo '<h3>' . woo_get_menu_name( 'category-menu' ) . '</h3>';

        wp_nav_menu( array( 
            'sort_column'    => 'menu_order', 
            'container'      => 'ul', 
            'menu_id'        => 'main-nav', 
            'menu_class'     => 'nav fl', 
            'theme_location' => 'category-menu' 
        ));
    }
    else
    {
        echo '<h3>' . woo_get_menu_name( 'primary-menu' ) . '</h3>';

        wp_nav_menu( array( 
            'sort_column'    => 'menu_order', 
            'container'      => 'ul', 
            'menu_id'        => 'main-nav', 
            'menu_class'     => 'nav fl', 
            'theme_location' => 'primary-menu' 
        ));
    }
}
2
Pontus Abrahamsson