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.

Vous recherchez un développeur WordPress capable de vous créer un thème sur-mesure ? C'est mon métier depuis plus de 8 ans, prenez contact et discutons de votre projet.

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. Julio Potier (BoiteAWeb)

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

    1. Aurélien Denis auteur de l’article

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

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

  2. GeekPress

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

    Bien joué

  3. 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. Aurélien Denis auteur de l’article

      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. une idée pour un code complet?……le php et moi on est pas copain

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

    1. Aurélien Denis auteur de l’article

      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.

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

  7. 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. Aurélien Denis auteur de l’article

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

  8. 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. Aurélien Denis auteur de l’article

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

  9. 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?

Les commentaires sont fermés.