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 -->
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'
));
}
}