Afficher une sidebar en fonction d’un tag sous WordPress

Mis à jour le :

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é.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

21 réponses
  1. Avatar de Laurent
    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? 🙁

  2. Avatar de 65pitou
    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 ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      S’il s’agit d’afficher la page d’archive d’une catégorie, il suffit de l’ajouter dans un menu de navigation…

  3. Avatar de Cam
    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 😉

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Vous ne devez pas reprendre le mot-clé imagine-cup mais le tag que vous utilisez sur votre site. Relisez le tutoriel. 😉

  4. Avatar de Mad
    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. Avatar de Aurélien Denis
      Aurélien Denis

      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. Avatar de Malkolm
        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.

  5. Avatar de passimal
    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 ….

  6. Avatar de simo
    simo

    salut,
    D’abord merci pour le tutoriel
    mon problème c’est que je ne trouve pas la ligne

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Avec un éditeur de code comme Notepad++ sous Windows ou Coda sous Mac OS, ouvrez les différents fichiers PHP de ton thème et fais une recherche globale ça ira plus vite. 😉

  7. Avatar de sam
    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.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Tu peux gérer différents header en indiquant le nom dans get_header(‘nom_fichier’). Ensuite, avec des conditions ça devrait le faire.

      1. Avatar de sam
        sam

        une idée pour un code complet?……le php et moi on est pas copain

  8. Avatar de Aurélien Denis
    Aurélien Denis

    Merci à tous !

  9. Avatar de GeekPress
    GeekPress

    En effet, on ne pense pas assez souvent à la fonction has_tag().

    Bien joué ^^

  10. Avatar de jbr
    jbr

    Sympa et simple en plus à mettre en place sur son blog.

  11. Avatar de Julio Potier (BoiteAWeb)
    Julio Potier (BoiteAWeb)

    Ho sympa, on pense pas à utiliser le paramètre en fait. Merci !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Ben oui… je me suis dit, il me faudrait un truc qui fait un has_tag et oh bingo ça existe ! 🙂

    2. Avatar de Cybercraft
      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 🙂