WordPress 2.6 — un nouveau « tag » conditionnel avec has_tag()

La lecture du Codex est un exercice que je pratique régulièrement et qui réserve parfois de bonnes surprises. Aujourd’hui, c’est le cas avec has_tag(). Bien qu’absent de la liste des nouvelles fonctionnalités, ce tag conditionnel à bien fait son apparition avec WordPress 2.6. Comment et pourquoi l’utiliser ? Magnéto :

Comment utiliser has_tag() ?

Contrairement à is_tag() qui permet d’afficher un contenu spécifique lorsqu’une page de tags est demandée et qui peut être placé n’importe où dans votre template, has_tag(), qui est très utile pour détecter si un billet contient un ou plusieurs mots-clés, doit se situer dans la boucle WordPress.

Pour ce faire, il suffit d’ajouter le code suivant juste après la boucle while

<?php while (have_posts()) : the_post(); ?>
    <?php if ( has_tag('News') ) continue; ?>

… et les billets comportant le tag News ne s’afficheront pas.

Plus d’informations

  • has_tag() repère tous les billets avec un tag quelconque,
  • has_tag('News') pour les billets tagués « News »,
  • has_tag('News','Insolite','Humour') pour isoler les billets possédant tous les tags fournis en argument.
  • MAJ : il semble que la ligne au-dessus ne fonctionne pas. Pour arriver au même résultat écrivez plutôt :
    <?php
        if ( has_tag('News') || has_tag('Humour') || has_tag('Insolites') ) continue;
    ?>

Pourquoi utiliser has_tag() ?

Dans le cadre de la réorganisation quasi-permanente de mon blog, j’ai fusionné les catégories En bref et News avec Revue de web pour réduire le nombre de rubriques. Or, seul le premier billet de cette catégorie doit s’afficher en haut du blog sous l’intitulé C’est vite dit… ; les anciens billets de cette catégories sont affichés plus bas dans la barre latérale.

Par ailleurs, pour garder une certaine cohérence avec les autres rubriques du blog, j’ai reclassé les billets appartenant auparavant à News dans des catégories plus précises. Ainsi, une News taguée « News » concernant WordPress est désormais classée dans… WordPress !

L’effet de bord, c’est que toutes les petites News se sont affichées dans la suite des billets du blog, ce que je voulais éviter pour des raisons esthétiques et éditoriales : je ne veux pas que le lecteur de passage qui atterrit sur la Home ait le sentiment que le blog est composé uniquement de petites brèves sans grande valeur ajoutée 😉

Dans un cas comme ça, has_tag() s’avère donc indispensable pour isoler tous les billets partageant les mêmes tags sans se soucier de leurs catégories respectives. WordPress, quelle souplesse !

Allez, has_fun() ^_^