Afficher une sidebar en fonction de la catégorie de l’article consulté

Dans ce tutoriel nous allons voir comment afficher une sidebar en fonction de la catégorie de l’article consulté, pour réaliser ce tutoriel je vais me référé au codex de wordpress et utiliser les marqueurs conditionnel is_category  et  is_single pour définir la catégorie de l’article consulté et afficher la sidebar appropriée.

 

 

Première chose à faire déclarer la sidebar pour la catégorie, ouvrez votre fichier function.php de votre thème, ensuite ajouter le code ci-dessous qui va permettre d’ajouter la sidebar de la catégorie dans  le menu Widget de WordPress .Bien sûr vous pouvez dupliquer le code si vous avez plusieurs catégories d’articles avec des sidebars il vous suffit de changer le nom de la sidebar à la ligne :

 

‘name’ => __( ‘Categorie exemple’)

Eviter les accents

register_sidebar(array(

    'name' => __( 'Categorie exemple'),

    'before_widget' => '<div id="%1$s" class="%2$s widget">',

    'after_widget' => '</div>',

    'before_title' => '<h3 class="widget-title">',

    'after_title' => '</h3>', ));

 

Après avoir déclaré votre sidebar faite un copier coller du fichier sidebar.php qui se trouve dans le dossier de votre thème ensuite renommer le de cette manière :

 

Sidebar-idenfiant.php

 

Identifiant est l ID de votre catégorie que vous récupérez dans le tableau de bord de WordPress Articles —> Catégories et dans la colonne Identifiant.

 

Ensuite ouvrez votre fichier sidebar-identifiant.php puis ajouter le nom de votre sidebar dans mon cas sidebar-categorie-exemple.php :

 

<?php

/**

 * Sidebar catégorie exemple.

 */

?>

<div id="sidebar">

<ul>

<?php if ( ! dynamic_sidebar( 'Categorie exemple' ) ) : ?>

<?php endif;?>

</ul>

</div>

 

Dernière étape ouvrez votre fichier single.php de votre thème repérer le code suivant :

 

 get_sidebar();

 

Puis remplacer le par celui-ci :

<?php// si l'article fait parti de la la catégorie exemple

if (is_single() && in_category('categorie-exemple') ) { 

// on affiche la sidebar pour cette catégorie

    get_sidebar('categorie-exemple');

// et si il y a aucune sidebar pour la catégorie de cet article 

} else { 

// on affiche celle par défaut

    get_sidebar(); 

}

?>

 

Remplacer categorie-exemple par l’identifiant de votre catégorie qui est le même que celui du fichier sidebar-categorie-exemple.php.

 

Si vous voulez déclarer plusieurs sidebars pour vos catégories,  créez vos fichiers sidebar avec les identifiants  et écrivez le code comme ceci :

<?php

// si l'article fait parti de la la catégorie exemple

if (is_single() && in_category('categorie-exemple') ) {

// on affiche la sidebar pour cette catégorie

    get_sidebar('categorie-exemple');

	//  

} elseif (is_single() && in_category('categorie-exemple-2') ) {

    get_sidebar('categorie-exemple-2');

	//

} elseif (is_single() && in_category('categorie-exemple-3') ) {

    get_sidebar('categorie-exemple-3');

	//

} elseif (is_single() && in_category('categorie-exemple-4') ) {

    get_sidebar('categorie-exemple-4');

	//

} elseif (is_single() && in_category('categorie-exemple-5') ) {

    get_sidebar('categorie-exemple-5');

	//

} elseif (is_single() && in_category('categorie-exemple-6') ) {

    get_sidebar('categorie-exemple-6');

	//

} elseif (is_single() && in_category('categorie-exemple-7') ) {

    get_sidebar('categorie-exemple-7');

	//

} elseif (is_single() && in_category('categorie-exemple-8') ) {

    get_sidebar('categorie-exemple-8');

	// et si il y a aucune sidebar pour la catégorie de cet article

} else {

// on affiche celle par défaut 

    get_sidebar(); 

}

?>
0 0 voter
Évaluation de l'article
S’abonner
Notifier de
guest
19 Commentaires
le plus ancien
le plus récent le plus populaire
Inline Feedbacks
View all comments
Corinne
8 années il y a

Comme c’est là, je ne vais pas pouvoir le faire aujourd’hui, mon thème est ultra compliqué 🙁 C’est d’autant plus frustrant que j’ai la solution sous les yeux!
Je vous remercie pour le tuto, je vais essayer de l’appliquer tant bien que mal.

Corinne
8 années il y a

Bon, thème superbe et très complet, trop pour moi. J’ai trouvé le plugin “Conditional Widgets” en compensation pour oublier cette déception^^
Il a la particularité de proposer ou non l’affichage d’un widget dans la sidebar par défaut du blog… un peu long à paramétrer selon le nombre en place mais il fait bien son travail et respecte mes css.

En tout cas, merci pour ce tuto, il sera certainement utile à d’autres personnes. Je vais faire le tour de votre site, j’ai vu d’autres choses intéressantes 😉

Nakota
Nakota
8 années il y a

Bonjour,

Merci beaucoup pour ce tuto qui correspond exactement à ce que je recherchais ! J’aurais quand même deux questions :
– Il est préférable de suivre ce tuto ou d’installer une extension qui remplisse la même fonctionnalité ? J’ai toujours la crainte de ralentir mon site internet à force d’installer des extensions
– Lors d’une mise à jours de WP ou du thème WP installé, les fichiers modifiés ne vont t’il pas retourner à leur état d’origine ?

Merci beaucoup.

Nakota
Nakota
Reply to  Fred
8 années il y a

Merci beaucoup pour vos réponses :).

Nakota
Nakota
8 années il y a

Re-bonjour,

J’aurais une autre question : Mon souhaite est d’afficher une sidebar différente selon la catégorie où le visiteur se trouve. Suite à mes recherches, c’est le page index.php qui correspond à l’affichage de ces requêtes. Je remplace donc le get_sidebar() par :


if (!is_category('12') ) {
get_sidebar('12');
} else {
get_sidebar();
}

Seulement maintenant ma sidebar reste vide pour toutes les catégories. As tu une idée du pourquoi et comment résoudre ce soucis ?

Merci à toi pour le temps accordé.

Nakota
Nakota
Reply to  Fred
8 années il y a

Oui, j’ai pu trouver la source de mon pb. Mon retour s’est placé juste en dessous au lieu de se mettre à la suite de ce commentaire-ci.

Merci beaucoup pour ton suivie en tout cas.

Nakota
Nakota
8 années il y a

J’ai trouvé la source de mon pb… Je n’ai pas trop compris pourquoi mais dans mon code j’avais gardé les commentaires mis dans l’exemple ici. En les supprimant cela marche très bien !
Dans le code que j’ai mis ci-dessus j’ai aussi oublié de supprimé le “!” lors de mes tests.

Encore merci pour cet excellent tuto qui, pour moi, m’a beaucoup plus aidé que les autres présent sur internet et légérement similaire.

Bonne continuation à vous.

kerplouz
kerplouz
7 années il y a

Bonjour,

Est il possible d’appliquer le meme principe à une page statique:

Si la page statique est “toto”
Alors afficher la sidebar “titi”

?

Merci d’avance !

bigbenz
7 années il y a

Bonsoir,
tuto pédagogique, une belle manière d’esquiver l’activation d’un plugin supplémentaire. Merci.

tim
tim
7 années il y a

Super, merci bcp ça va m’être vraiment utile ! Comme quoi même 2 ans après ce post reste d’actu 🙂 !!