Afficher une sidebar en fonction d’un tag sous WordPress

Avec WordPress, on peut créer des sidebars pour insérer des widgets à peu près n’importe où sur votre site. Très pratique, ces emplacements personnalisés peuvent être affichés en fonction d’une condition et notamment d’un tag comme je vous l’explique dans ce tutoriel.

Récemment, j’ai du refondre le site Protuts.net que j’ai fondé il y a maintenant 3 ans. Un problème qui s’est posé à moi fut d’afficher une sidebar uniquement si le mot-clé ou tag correspondait à imagine-cup.

De fait, voici la technique que j’ai utilisée que vous pourrez facilement adapter à vos besoins.

Ouvrez par exemple le fichier single.php qui est le modèle PHP pour afficher les articles de votre site WordPress. Remarquez la présence d’une ligne appelant la sidebar :

<?php get_sidebar(); ?>

Cette ligne est présente dans la plupart des thèmes. Remplacez donc celle-ci par ce bout de code :

<?php if (has_tag('imagine-cup')) { ?>
 <?php get_sidebar('mspsmt'); ?>
 <?php } else { ?>
 <?php get_sidebar(); ?>
 <?php } ?>

Ces lignes vérifient dans un premier temps si l’article est tagué imagine-cup. Si oui, la sidebar dédié à Imagine Cup s’affiche – elle porte le nom de sidebar-mspsmt.php dans ce cas là, si non la sidebar par défaut s’affiche.

Voici l’exemple final sur la page dédiée à l’Imagine Cup 2012 sur Protuts – je fais partie de l’équipe Social Media en charge de faire le buzz sur la toile, si vous recherchez plus d’infos faites-le savoir !

L’avantage de cette technique est quelle fonctionnera non seulement pour un article (single.php) mais aussi pour une page tag ou catégorie – bien que dans ce dernier cas on préférera créer un fichier PHP dédié.

Crédits photo : juandesant

21 commentaires

    1. Cybercraft

      C’est vrai…. « has_tag() » n’est pas une fonction que j’utilise souvent… Mais elle peut s’avérer très utile. Super tuto

  1. sam

    hello
    qui saurait comment faire pour changer le header en flash en foction d’un tag ou d’une catégorie.?
    merci par vanace pour votre temps.

  2. passimal

    Moi c’est en fonction d’une page specifique que je desire changer mon side bar quelle fonction wordpress faudrait-il que j’utilise dans le « if » ???

    Merci d’avance
    PS : MErci pour la super bonne astuce ….

  3. Mad

    Bonjour et bravo pour votre savoir partagé.

    J’espère que ma question sera comprehensible est t’il possible de rendre dynamique la récuperation du has_tag pour y passer par exemple le nom de l’article et utilisé ce tag dans mes articles liés pour les afficher ???
    Je voudrais afficher dans ma sidebar les articles en relations avec l’article principal.

    Exemple j’ai un article d’un domaine viticole nommer PIERRE, je veux afficher les offres de ce domaine qui contiendront le tag Pierre et ainsi de suite pour les autres articles et articles liés. Je n’aurai bien sur qu’une seule sidebar qui adaptera le contenu en fonction du nom de l’article principal.

    Merci et longue vie a wpchannel.

    1. Aurélien Denis auteur de l’article

      Oui c’est tout à fait possible de créer une telle fonction. Maintenant, je ne peux y passer du temps pour te proposer un exemple. Essaies d’utiliser le codex WordPress pour ce faire ou demandes de l’aide sur les forums (GeekPress, WordPress francophone, etc.). Un plugin d’articles relatifs fonctionne généralement avec les tags aussi.

      1. Malkolm

        Bonjour et merci de votre réponse
        Pas de soucis pour l’exemple.
        Pour ce qui est des plug-in moins j’en ai mieux c’est même si j’en utilise car certains sont très performants.
        Mais je vais approfondir la chose car je voudrais pouvoir personnaliser a 100% la chose.
        Encore merci.

  4. Cam

    Salut,
    Je n’ai pas tout compris, ce que je souhaite faire :

    afficher une sidebar différente pour certains articles, j’ai donc modifier le fichier single.php et ajouter le mot clé « imagine-cup » à l’article ou je souhaite afficher une autre sidebar.

    Mais je dois créer un fichier imagine-cup.php avec les mêmes données que sidebar.php ?

    J’ai du louper quelque chose

    Merci d’avance pour votre aide

  5. 65pitou

    Très intéressant ! Et si je veux qu’une catégorie précise d’articles s’affiche sans aucune sidebar, je procède comment, avez-vous une suggestion ?

  6. Laurent

    Bonjour et merci pour l’astuce.
    J’ai juste une question « idiote » : je travaille sur un thème enfant sous Genesis. En intervenant dans le fichier single.php, est-ce que je m’expose à des problèmes lors des futures mises à jour?

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX