Vous êtes ici : Accueil | Plugins WordPress | Widget Logic : Un plugin pour choisir où afficher vos widgets

Widget Logic : Un plugin pour choisir où afficher vos widgets

Plugin Widget Logic

Terminons la semaine avec un article d’un nouveau cuistot : Jordan Bourget.

Cet article concerne un plugin bien pratique : Widget Logic. Je ne vous en dis pas plus et laisse la parole à Jordan :

Un des gros avantages de WordPress, c’est certainement l’utilisation des plugins et des leurs widgets (quand ils en ont !). Ils sont très faciles à mettre en place , modulables et avec pas mal de possibilités.

Pour savoir comment fonctionne les widgets, je vous recommande de lire cet article.

C’est bien simple, si une fonctionnalité vous manque dans votre site WordPress vous trouverez toujours un plugin pour y répondre… par contre l’inconvénient c’est que l’on trouve de tous, du gratuit et du payant, du bon et surtout du très moyen.

C’est pourquoi aujourd’hui je vais vous conseiller un plugin qui répond a l’un des premiers problèmes qui se pose quand on commence vraiment à développer sous WordPress :

Comment faire pour que ce widget n’apparaisse que sur cette page ?

Nous allons donc traiter ici du cas de « Widget Logic » une petite extension WordPress aussi discrète que puissante.

Elle est utile dans toutes sortes de situations et surtout tous types de sites web. Voici quelques exemples d’utilisations :

  • Afficher un second menu de navigation pourra aider vos visiteurs à mieux naviguer au sein d’une certaine catégorie,
  • Afficher  un nuage de mots-clés uniquement quand les visiteurs sont sur un article précis,
  • Masquer le widget « panier » de votre boutique quand les visiteurs sont sur le blog, etc.

Bref, beaucoup de choses sont possibles.

Alors, comment ça marche ?

Il faut savoir que selon le plugin installé, les effets dans l’administration seront soit rapidement visibles soit très discrets.

Pour que vous puissiez voir ce que Widget Logic a changé je vous invite à aller dans le menu « Apparence » et le sous-menu « Widgets ».

Cliquez ensuite sur l’un des widgets déjà placés dans les différentes « zones de widget » (ou sidebars), vous verrez qu’un nouveau champ intitulé « Widget Logic » est apparu.

Champ Widget Logic

C’est dans ce champ que nous allons placer des instructions pour déterminer si notre widget sera ou non affiché sur telle page, tel article, telle archive, etc.

Vous allez voir que les possibilités sont infinies.

Les Conditionnal Tags

Les conditionnal tags sont des fonctions de WordPress qui permettent de reconnaître une situation d’affichage particulière. Ce sont eux qu’il faudra placer dans le champ Widget Logic présent dans chacun des widgets.

Pour commencer, gardez en tête qu’un widget dont le champ Widget Logic reste vide s’affichera sur toutes les pages.

Passons en revue la plupart des conditionnal tags que vous pourrez utiliser dans Widget Logic et ce qu’ils permettent :

CONDITIONNAL TAGEFFET
is_single()Affiche le widget quand le visiteur se trouve sur la page d’un article.
is_single(17)Affiche le widget seulement sur l’article dont l’ID est 17.
is_single(‘coucou’)Affiche le widget seulement sur l’article dont le slug est ‘coucou’. Le slug est l’identifiant textuel contenu dans l’url.
is_single(‘La vie est belle’)Affiche le widget seulement sur l’article dont le titre est ‘La vie est belle’.
is_single(array(’17’,’coucou’,’La vie est belle’))Affiche le widget seulement sur les articles dont l’ID, le slug est ‘coucou’ et le titre est ‘La vie est belle’.
is_category()Affiche le widget sur les pages de catégories.
is_category(17)Affiche le widget sur la page de la catégorie dont l’identifiant est 17.
is_category(‘sport’)Affiche le widget sur les pages de catégories dont le slug ou le nom est ‘sport’.
is_tag()Affiche le widget sur les pages de mots-clés.
is_tag(7)Affiche le widget sur les pages de mots-clés dont l’ID est 7.
is_sticky()Affiche le widget sur les articles ou la mention « mettre cet article en avant » est cochée.
is_page()Affiche le widget seulement pour les pages. On peut cibler des pages en mettant leur nom, titre ou ID entre les parenthèse comme on l’a fait pour is_single().
is_home()Affiche le widget sur la page qui affiche tous les articles. Autrement dit, si dans l’administration vous avez choisi une page comme « page des articles », votre widget ne s’affichera que sur cette page.
is_front_page()Affiche le widget sur la page que vous avez définie comme page d’accueil via l’administration, que ce soit une page statique ou que votre page d’accueil affiche les derniers articles.
is_author()Affiche le widget sur les pages auteurs.
is_search()Affiche le widget sur les pages de résultats de recherche.
is_404()Affiche le widget sur les pages 404, ce qui correspond aux pages d’erreur (lorsque aucune page ne correspond à l’adresse que vous avez tapé dans votre navigateur).
is_archive()Affiche le widget sur les pages d’archives (catégories, mots-clés, dates, auteurs)
is_date()Affiche le widget sur les pages d’archives datés (annuelles, mensuelles, journalières, etc.).
is_user_logged_in()Affiche le widget uniquement aux utilisateurs connectés.

Il existe encore d’autres possibilités pour cibler d’autres types de pages. Vous pouvez aller jeter un coup d’œil sur cette page (en anglais) pour découvrir tous les conditionnal tags existants à ce jour et ce qu’ils permettent de cibler.

Combiner plusieurs conditions

Et voilà maintenant la raison qui, avec les conditionnal tags, fait que j’utilise ce plugin là et pas un autre pour gérer l’affichage des widgets sur mes sites web.

En effet, Widget Logic supporte les opérateurs logiques « ET » (&&), « OU » (||) et « NE PAS » (!) ce qui va nous permettre d’accroître de manière simple les possibilités offertes.

Pour  plusieurs conditionnal tags, vous allez donc devoir utiliser les opérateurs logique « et », « ou » ou « ne pas ».

Voici quelques exemples pour vous montrer comment cela fonctionne :

  • Imaginons que vous voulez afficher un widget météo uniquement sur un article traitant des dérèglements climatiques. Cet article possède l’ID 14. Il faut mettre « is_single(14) » dans le champ Widget Logic.
  • Maintenant, si l’on désire que notre widget s’affiche partout sauf sur la page statique définie comme page d’accueil, il faut donc mettre « !is_front_page() » dans le champ Widget Logic du widget concerné. Cela signifie « ne pas afficher le widget si la page actuelle est la page définie comme page d’accueil ».
  • Dernier exemple, si l’on veut afficher notre widget seulement sur les articles mis en avant et classés dans la catégorie « Sport », il faut mettre « is_sticky() && is_category(‘Sport’) » dans le champ Widget Logic. Cela veut dire « afficher le widget que si l’article a été mis en avant ET est classé dans la catégorie Sport ».

Bien sûr, il est possible de complexifier les choses pour afficher vos widgets sur des pages bien précises.

Toutefois, les conditionals tags et les opérateurs logiques présentés dans cet article vous permettront de faire pas mal de combinaisons avec vos widgets.

Allez-vous utiliser ce plugin pour personnaliser l’affichage des widgets sur votre site ? Si oui, recherchez « Widget Logic » dans le champ de recherche des extensions (voir cet article pour savoir comment installer un plugin).

Si vous avez apprécié cet article, inscrivez-vous à la newsletter

Recevez gratuitement les prochains articles et accédez à des ressources exclusives. Plus de 10000 personnes l'ont fait, pourquoi pas vous ?

C'est parti, je m'inscris !

23 commentaires Ajoutez le vôtre

  1. Personnellement je préfère utiliser la fonctionnalité WIdget Visibilty de Jetpack 😉 Comme j’utilise certaines autres de ces fonctionnalités, cela m’évite d’installer un plugin de plus.
    En plus contrairement à Widget Logic, WIdget Visibilty n’oblige pas à gérer les conditions à la main mais propose directement une liste à base de Masquer/Afficher si page/article/catégorie et bien sûr on peut choisir quelle page ou article…

    Répondre
  2. Personnellement je me sert le plus souvent de :
    ICL_LANGUAGE_CODE == ‘xx’
    Je glisse 2 widgets dans la sidebar, un avec « ICL_LANGUAGE_CODE == ‘en' », pour le contenu en Anglais. Et l’autre avec « ICL_LANGUAGE_CODE == ‘fr' », pour le contenu en Français.
    Pratique quand WPML n’est pas possible.

    Ex : http://i.imgur.com/wnu6qP0.jpg

    Répondre
    • Je reviens sur mes dires. Ce n’est possible que quand wpml est installé (ICL_LANGUAGE_CODE est une constante qui contient le langage courant).
      Ma technique est utile quand vous ne possédé pas « WPML String Translation »

  3. Bonjour,
    J’adore l’article. Très pratique et rudement efficace.
    Par contre, une remarque concernant le site de Jordan Bourget, il y a une coquille sur le menu « A PORPOS »

    Répondre
    • Merci pour l’erreur ;p je l’ai corrigée

  4. Bonjour et merci au cuistot Jordan,

    Ce plugin a l’air très pratique mais je pense que tous les débutants comme moi ne l’utiliseront pas trop car il semble assez complexe à paramêtrer.

    Cordialement,
    Michel

    Répondre
  5. Merci pour cet article rudement intéressant et pas difficile à paramétrer (-: pour rassurer Michel. Pierre

    Répondre
  6. Merci pour avoir développer ce plugin, il manquait cruellement!!! Je vais de suite le tester…

    Répondre
    • Bonjour Nina,
      Nous ne sommes pas les auteurs de ce plugin, Jordan a juste rédigé un tutoriel pour expliquer son fonctionnement 🙂
      Bonne continuation
      Alex

  7. OK très bien, mais depuis 2 versions il y a l’option visibilité qui fait à peu près la même chose de manière native. Du moins elle me suffit.

    Répondre
  8. Excellent article, merci au(x) Chef(s) cuistot(s) pour ce festin de roi 😉

    Question :
    – Ce plugin est-il compatible avec « Q2W3 Fixed Widget » (Widget flottant recommandé par la Maison Marmitte…)

    Question plus générale, comment se fabrique un plugin voire se combine en un seul plusieurs plugins, ça m’intrigue tout ça…

    Merci !

    Répondre
  9. Excellent article, merci au(x) Chef(s) cuistot(s) pour ce festin de roi 😉

    Question :
    – Ce plugin est-il compatible avec « Q2W3 Fixed Widget » (Widget flottant recommandé par la Maison Marmitte…)

    Question plus générale, comment se fabrique un plugin voire se combine en un seul plusieurs plugins, ça m’intrigue tout ça…

    Enfin, comme je suis curieux, je suis allé sur le site de l’extension et j’ai lu ça :

    « PLEASE NOTE The widget logic you introduce is EVAL’d directly. Anyone who has access to edit widget appearance will have the right to add any code, including malicious and possibly destructive functions. There is an optional filter ‘widget_logic_eval_override’ which you can use to bypass the EVAL with your own code if needed. »

    Quelqu’un peut m’expliquer ça ?
    Merci !
    Michaël

    Répondre
  10. Il existe également un plugin très pratique pour gérer l’affichage d’une plugin : dynamic widgets.
    Je vais tester celui-ci pour voir.

    Merci !

    Répondre
  11. Bonjour,

    Je pense à priori que WIdget Visibilty est moins compliqué à configurer pour un débutant, mais je vais quand même essayer Widget Logic , je serai peut être surpris !
    Merci pour ce partage.

    Bruno

    Répondre
  12. Salut, je galère un peu avec ce plugin.
    Y a t-il un code spécifique pour afficher un widget sur tous les articles d’une catégorie en particulier ?
    J’ai essayé ce code mais ça ne fonctionne pas :
    is_category(‘slug-de-ma-cat’)

    Merci.

    Répondre
  13. Finalement trouvé, j’avais mis && is alors que c’est && in

    Répondre
  14. Merci pour cet article que je viens de découvrir !

    Je viens de l’installer et cela fonctionne bien. Pas contre je n’arrive pas à mettre en place 2 choses :

    1) Afficher un widget sur seulement une page parent et toutes ses pages enfants, pratique pour éviter de devoir rajouter l’ID d’une nouvelles page à chaque création.

    2) Afficher un widget sue seulement une catégorie et les articles de cette catégories.

    J’ai pourtant cherché ici, testé pas mal de choses, mais sans succès… http://codex.wordpress.org/Conditional_Tags

    Ceci est pour un site sur lequel je mets une structure en silo.

    Répondre
  15. Pour les catégories je viens de trouver, il faut mettre :
    in_category(283)||is_category(283)
    in = dans la catégorie, qui correspond aux articles
    is = pour la catégorie

    Pour les pages enfants, je ne trouve pas.
    Il y a marqué ceci :

    Note: There is no function to check if a page is a sub-page. We can get around the problem
    if ( is_page() && $post->post_parent > 0 ) {
    echo « This is a child page »;
    }

    Répondre
  16. Très bon plugin, j’avais lu l’article à sa sortie et un besoin pour un nouveau client m’a fait revenir ! après je trouve la condition pour les template très utile !
    is_page_template()

    Je pense qu’elle mériterait d’apparaître dans l’article ^^

    Répondre
  17. Je suis entrain de dev un site avec 15 zones de plugins, chaque zone est visible sur une seule page, j’ai préféré utilise un système stable avec un code simple qui indique l’utilisation d’une zone de widget uniquement sur un template de page

    Répondre
  18. Merci cuistot ! 🙂
    Ce plugin est vraiment excellent ! Je l’ai utilisé pour avoir un contenu de barre latérale différent selon qu’on se trouve sur les pages statiques ou sur la partie blog de mon site; ça marche nickel ! La liste des fonctions dans ton article m’a bien servi.
    Au départ, j’envisageais d’utiliser un plugin qui permet d’utiliser 2 thèmes différents sur le même site, mais j’ai bien fais de ne pas m’embarquer là-dedans.

    Répondre
    • Il n’y a pas de quoi 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

La Marmite ne peut malheureusement pas fournir de support. Merci d'en tenir compte dans votre commentaire 😉

Si vous ne lui en voulez pas, donnez-lui un j'aime sur Facebook :



30 Shares
Share21
Tweet1
Share8