Comment utiliser les balises conditionnelles dans WordPress

Publié: 2020-06-09

L'une des choses que j'aime le plus dans WordPress, c'est qu'il comprend de nombreuses fonctions qui simplifient grandement notre travail de développeur. Par exemple, considérez des fonctions comme esc_attr , qui échappe le texte afin qu'il puisse être ajouté en toute sécurité dans un attribut de balise HTML, ou esc_html , qui échappe le texte afin qu'il puisse être inclus en toute sécurité dans une page HTML. Ou jetez un œil à certaines des fonctions dont nous disposons pour assainir les données que nous recevons d'un utilisateur : sanitize_text_field , sanitize_textarea_field ou sanitize_email . Vous vous habituez tellement à ces fonctions bien définies qu'elles vous manquent vraiment lorsque vous devez développer quoi que ce soit en dehors du domaine WordPress et découvrez qu'elles ne sont plus disponibles !

La collection de fonctions dont nous disposons lorsque nous développons sur WordPress est incroyablement vaste. Et plus nous les connaissons, plus il est facile d'écrire du code de haute qualité.

Aujourd'hui, je voudrais vous parler des balises conditionnelles dans WordPress : ce qu'elles sont, comment les utiliser, ce qui peut être trompeur à leur sujet et pourquoi elles sont si utiles. Si vous êtes un développeur de plugins ou de thèmes et que vous ne les connaissez pas encore, ne manquez pas cet article.

Que sont les balises conditionnelles de WordPress ?

Les balises conditionnelles sont des fonctions définies dans WordPress dont le résultat est une valeur booléenne (c'est-à-dire qu'elle est soit true soit false ). Ce sont des fonctions que nous pouvons utiliser à la fois dans nos plugins et nos thèmes pour prendre des décisions conditionnelles en fonction du contenu que nous sommes sur le point de rendre.

Ce qui rend les balises conditionnelles géniales, c'est que, en général, leurs noms sont explicites et donnent un code très facile à comprendre. Par exemple, si vous utilisez la balise conditionnelle is_sticky dans votre plugin, elle retournera clairement true si, à l'intérieur de la boucle WordPress, nous traitons une publication collante . Aucun doute sur sa sémantique, n'est-ce pas ?

Avant de commencer avec quelques exemples, veuillez garder à l'esprit que les balises conditionnelles ne sont disponibles qu'une fois que WordPress a déterminé le contenu demandé par le visiteur. Si nous essayons de les utiliser avant, leur résultat sera toujours false . En d'autres termes, nous ne pouvons les utiliser qu'une fois l'action posts_selection exécutée.

Balises conditionnelles les plus courantes

La plupart des balises conditionnelles dans WordPress commencent par is_ , puisque la réponse à une question comme "est-ce que bla bla ?" est une valeur booléenne : soit "oui" soit "non". Mais, malheureusement, ce critère n'est pas toujours respecté (comme nous le verrons ci-dessous).

Il existe de nombreuses balises conditionnelles dans WordPress avec lesquelles vous vous familiariserez au fur et à mesure que vous en aurez besoin. Mais il y en a quelques-uns qui sont extrêmement courants et plus tôt vous apprenez à les connaître, mieux c'est. Alors regardons de plus près ceux-ci :

  • is_single . Il vérifie si l'élément actuel est une publication WordPress ou une instance de tout autre type de publication personnalisé (comme, par exemple, un produit WooCommerce).
  • is_page . Il vérifie si l'élément actuel est une page WordPress.
  • is_attachment . Il vérifie si l'élément courant est une pièce jointe. Les pièces jointes sont les fichiers que vous téléchargez dans votre médiathèque, tels que des images, des vidéos, des fichiers, etc.
  • is_singular . Il vérifie si l'une des trois fonctions précédentes est true . Autrement dit, il vérifie si l'élément actuel est une publication, une page, une pièce jointe ou tout autre type de publication.
  • comments_open . Il renvoie true si les visiteurs peuvent commenter l'élément actuel. Voir? Ici, vous avez un exemple où la balise conditionnelle ne commence pas par is_ .
  • is_category . Il vérifie si nous regardons actuellement une page d'archive de catégorie.
  • in_category . Il renvoie vrai si le message actuel est dans la catégorie donnée.
  • is_tag . Il vérifie si nous regardons actuellement une page d'archive de balises.
  • has_tag . Il vérifie si le message actuel est marqué à l'aide de la balise spécifiée.
  • is_main_query . Il vérifie si nous sommes dans la boucle principale de WordPress.

Saviez-vous qu'il existe des balises conditionnelles qui peuvent être trompeuses ?

Il y a des cas où les balises conditionnelles ont des noms qui peuvent prêter à confusion car ce qu'elles semblent évaluer et ce qu'elles évaluent réellement sont des choses différentes :

  • is_admin . Vous pourriez penser que cette fonction vérifie si l'utilisateur actuel est un administrateur, n'est-ce pas ? Tort! Il vérifie si nous sommes dans une page du tableau de bord WordPress (et le résultat serait alors true ) ou dans le front-end (c'est-à-dire false ).
  • is_home . J'avais l'habitude de penser que cette fonction vérifie si la page actuelle est votre page d'accueil. Par exemple, sur notre site Web, ce serait https://neliosoftware.com . Mais malheureusement, ce n'est pas le cas. WordPress est né en tant que plateforme de blogs et je pense que c'est un exemple de "code hérité". is_home est une fonction conditionnelle qui vérifie si la page actuelle est votre page Blog . Ainsi, par exemple, si vous utilisez la configuration par défaut de WordPress, is_home effectivement true lorsqu'un visiteur se trouve sur la page d'accueil ( https://yourweb.com ), car cette page affiche vos derniers articles de blog. Mais si vous définissez votre page de blog sur autre chose (comme https://yourweb.com/blog ), alors is_home sera true lorsque le visiteur demandera https://yourweb.com/blog et false sinon.
  • is_front_page . Et c'est la balise conditionnelle qui vous permettra de savoir quand le visiteur est dans la "page d'accueil".
  • is_dynamic_sidebar . Cette fonction vérifie si votre thème a une ou plusieurs barres latérales de widgets et, si c'est le cas, elle renverra true si au moins une de ces barres latérales n'est pas vide.

Paramétrage des balises conditionnelles

Bien que la plupart des balises conditionnelles soient des fonctions qui peuvent être appelées sans paramètres, beaucoup d'entre elles prennent en charge les paramètres. Si nous les utilisons, nous pouvons être plus précis sur les critères auxquels le poste actuel doit répondre. Et ils le font de manière assez logique.

Selon la fonction spécifique que nous utilisons, nous pourrions vouloir vérifier si l'élément actuel a un certain ID ou un certain slug, s'il s'agit d'une instance d'un certain type de publication, ou même s'il a un titre spécifique. Par exemple:

  • is_singular( 'product' ) vérifie si l'élément courant est un product .
  • is_page( 'Contact Us' ) vérifie si le titre de la page actuelle est "Contact Us". Cette fonction accepte différents types d'arguments et, selon ce que vous fournissez, elle vérifiera une chose ou l'autre. Par exemple, vous pouvez vérifier si l'élément actuel a un certain ID ou un certain titre ou slug. Plutôt chouette, hein ? Vous pouvez même utiliser des listes comme paramètres !
  • is_single( [ 5, 10, 11 ] ) vérifie si l'ID de l'élément actuel est 5, 10 ou 11. C'est assez similaire à is_page , mais, comme nous l'avons déjà dit, cela fonctionne pour les publications autres que la page.

Comment utiliser les balises conditionnelles

Jetons un coup d'œil à quelques exemples où les balises conditionnelles pourraient être utiles.

Personnalisation des modèles

Comme vous l'aviez probablement prévu, les balises conditionnelles sont évidemment utiles dans les thèmes. Si vous souhaitez que le thème affiche telle ou telle information en fonction du type de contenu visualisé à un moment donné (et c'est quelque chose que nous voudrons faire souvent), les balises conditionnelles sont vos alliées :

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

Cela vous permet d'utiliser le même modèle pour différents types de contenu et de personnaliser chacun d'eux avec des balises conditionnelles.

Mise en file d'attente conditionnelle d'actifs

Mais les balises conditionnelles sont également extrêmement utiles pour les développeurs de plugins. Plus précisément, ils nous aident à charger des parties de notre plugin de manière conditionnelle, en fonction des résultats que nous obtenons des balises conditionnelles.

Par exemple, imaginons que nous développions un plugin qui ajoute une sorte de fonctionnalité à nos articles de blog. Supposons que cette fonctionnalité nécessite que nous mettions en file d'attente un script et une feuille de style sur le front-end. Pour mettre en file d'attente les scripts et les styles dans WordPress, nous avons un filtre appelé wp_enqueue_scripts :

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

Le problème avec l'extrait précédent est qu'il met toujours nos ressources en file d'attente, quelle que soit la demande du visiteur. Chaque fois que wp_enqueue_scripts s'exécute (et c'est le cas dans chaque requête frontale), notre fonction de rappel sera appelée et notre script et notre feuille de style seront ajoutés. Mais nous avons dit que notre fonctionnalité n'affectait que les articles de blog, alors… avons-nous vraiment besoin de toujours mettre ces ressources en file d'attente ? Bien sûr que non! Et nous pouvons améliorer cela en utilisant la balise conditionnelle appropriée :

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

En résumé

Les balises conditionnelles de WordPress nous permettent de tester différents critères de notre contenu et ainsi d'adapter ce qui se passera en fonction de cela. Malgré leur extrême simplicité, ce sont des fonctions très utiles qui rendent notre code plus intelligible et efficace.

J'espère que vous avez appris quelque chose aujourd'hui et, comme toujours, si vous avez des questions ou des commentaires, veuillez nous en informer dans la section des commentaires ci-dessous.

Image sélectionnée par Justin Luebke sur Unsplash.