Avoir différentes sidebar en fonction de la page

Avoir différentes sidebar en fonction de la page

Sur un site wordpress, voici l’asctuce pour avoir des sidebars différentes selon la page en cours. Chaque catégorie ou custom post peut ainsi disposer de sa propre sidebar , avec des élements distincts. Voici un exemple de code à  insérer dans le fichier functions.php pour créer des widgets :

<?php

if (function_exists('register_sidebar')) {
// Sidebar Area
register_sidebar(array(
'name' => __('Sidebar', 'turf'),
'id' => 'themelab-sidebar',
'description' => __('Sidebar pour vos articles', 'turf'),
));

// Sidebar Area
register_sidebar(array(
'name' => __('Pages', 'turf'),
'id' => 'themelab-page',
'description' => __('Sidebar pour vos pages', 'turf'),
));

register_sidebar(array(
'name' => __('Eme', 'turf'),
'id' => 'eme-page',
'description' => __('Sidebar pour les pages Eme', 'turf'),
));

register_sidebar(array(
'name' => __('Sessad', 'turf'),
'id' => 'sessad-page',
'description' => __('Sidebar pour les pages Sessad', 'turf'),
));
}

Je crée dans l’exemple une sidebar pour mes custom post « sessad« , une autre pour les pages « eme« ,  une autre sidebar pour les articles, et enfin une dernière pour les pages. Une fois la fonction créée dans functions.php, on doit aussi créer toutes les sidebars correspondantes :  sidebar-eme, sidebar-sessad etc..contenant ce genre de code:

	<?php if ( is_active_sidebar( 'sidebar-eme' ) ) : ?>
<div id="secondary" class="widget-area" role="complementary">
<?php dynamic_sidebar( 'sidebar-eme' ); ?>
</div><!-- #secondary -->
<?php endif; ?>

Dans mon cas, puisque je veux afficher une sidebar différente dans chaque custom post type, je crée également mes modèles de pages et les singles page correspondantes pour mes custom post depuis lesquelles je vais appeler mes sidebar.

erty

Comme on le voit ici, j’ai une single, une page single-sessad.php , single-eme.php. Et dans ces pages, j’appelle les sidebar différentes.

<?php
// Sidebar
get_sidebar('Eme');

?>

Dans le cas où l’on voudrait simplement afficher une sidebar différente en fonction de  la catégorie dans laquelle on se trouve, on pourrait tout à fait conserver les articles classiques, et choisir la sidebar voulue avec une simple conditions dans le fichier single.php.