Les Conditional Tags sont des fonctions fournies par WordPress et qui permettent d’éviter des répétitions de code dans les templates en testant différentes situations comme « est-on sur la page d’accueil ? » ou encore « l’utilisateur est-il connecté ? ».
Sommaire du cours
Que sont les Conditional Tags ?
Commençons par une petite définition :
Conditional Tags
Définition
Ce sont donc des tests que l’on met dans nos templates pour connaitre l’état de la page. Et il en existe plein ! On va en voir certains dans ce cours, mais pas tous !
Comment les utiliser ?
Leur utilisation est très simple. Les fonctions sont utilisées en général dans une condition et renvoient toujours une valeur booléenne true/false
.
Par exemple, il existe la fonction is_user_logged_in()
qui permet de savoir si l’internaute est connecté ou non. C’est d’ailleurs cette fonction que j’utilise pour savoir si vous êtes connecté ou non, et si oui, afficher votre nom en haut à droite du site :
Ces Conditional Tags commencent en général par is_
ou has_
(est quelque chose ou a quelque chose).
Exemple avec la page archive
Dans les cours précédents, nous avions cout-circuité le Template Hierarchy afin de renvoyer la recherche et la home vers les archives.
Grâce aux Conditional Tags, on va pouvoir savoir dans quel cas on est, afin d’afficher le titre de la page en conséquence :
Plutôt pratique non ? Grâce à ces fonctions on comprend tout de suite nos conditions.
Malgré le fait que l’on ait un seul template archive.php, les Conditional Tags nous permettent de gérer plusieurs cas de figure (archive, home, recherche…).
la fonction single_tag_title()
permet d’afficher l’étiquette ou la catégorie actuellement sélectionnée et get_search_query()
permet de récupérer l’expression recherchée.
Quelques conditional tags les plus utiles
Voyons maintenant quelques-uns d’entre eux :
is_single()
Ce tag permet de savoir si on est sur une page single ou non. Bien sûr il n’y a aucun intérêt à l’utiliser en l’état dans single.php (puisque ce serait toujours vrai).
Mais on peut également tester si on affiche un article en particulier grâce à son ID ou son slug :
Mais en général, on utilise plutôt la version globale.
is_page()
Sur le même principe que précédemment, on peut tester si on est dans une page, n’importe laquelle ou spécifique :
is_archive()
Pour ce tag pas de paramètre. Il teste simplement si vous êtes dans une archive ou non.
Attention cependant, si vous faites des Custom Post Types, il faudra utiliser is_post_type_archive()
mais on va l’aborder plus tard dans la formation.
is_front_page()
Pour tester si vous êtes sur la page d’accueil du site ou non, utilisez :
Ce Conditional Tag fonctionne autant lorsque le blog est en page d’accueil (réglage par défaut de WordPress) que lorsque c’est une page.
is_home()
A contrario, ce tag renvoie true
seulement si vous êtes sur la page d’accueil des articles du blog.
Donc attention :
- Si le blog est en page d’accueil du site,
is_home()
etis_front_page()
répondront tous deuxtrue
; - Si le blog est défini par exemple sur la page « blog », alors
is_home()
seratrue
seulement sur cette page.
is_user_logged_in()
Comme on l’a vu précédemment, ce tag permet de controller si l’utilisateur est connecté ou non. On peut du coup afficher son nom et le lien de déconnexion, ou alors afficher le lien de connexion :
has_post_thumbnail()
Cette fonction permet de controller si l’article possède ou non une image mise en avant. Par défaut on en n’a pas forcément besoin : la fonction the_post_thumbnail()
ne génère la balise de l’image seulement si l’article en a une définie.
Mais ça peut être utile dans le cas où vous voudriez également ajouter un peu de markup HTML autour, comme une <div>
par exemple :
Comme ça, inutile d’afficher la <div>
s’il n’y a pas d’image à afficher.
Il en existe beaucoup et on ne les a pas tous vus, mais le principe reste le même pour chacun d’entre eux. Je vous invite à garder de côté la documentation officielle à ce sujet :
Conditional Tags | Documentation WordPress
Conditional Tags are a boolean data type that can be used in your Template Files to alter the display of content depending on the conditions that the current page matches.
Tester la valeur de vos Conditional Tags
Si vous voulez afficher la valeur d’un tag, dans le but de débugguer votre thème, utilisez la fonction var_dump()
de PHP, par exemple juste après le <body>
:
Vous devriez voir apparaitre à l’écran, à la place de votre site : bool(true) ou bool(false).
Bien, vous avez maintenant en main plusieurs outils pour gérer vos templates WordPress. Rappelez-vous que les Conditional Tags peuvent être utiles afin de gérer des cas légèrement différents dans le même fichier et ainsi vous éviter des répétitions de code inutiles.
Dans le prochain cours on va voir encore un concept essentiel du développement de thèmes avec WordPress : les templates personnalisés pour les pages et articles.
Alexis
Le 10 octobre 2019
Attention : Notice: get_currentuserinfo est obsolète depuis la version 4.5.0 ! Utilisez wp_get_current_user() à la place 🙂
Denis
Le 27 mars 2020
Bonjour,
J’ai fais un copier/coller dans le header.php du texte indiqué ci-dessus.
J’ai bien le lien de connexion, de déconnexion. Mais si je suis connecté, plusieurs messages d’erreur apparaissent en haut de page ?
Il est indiqué dans la barre d’admin comme toujours Bonjour et le pseudo indiqué mais est-ce de celui-ci dont on parle dans ce code ???
Boscher
Le 4 septembre 2020
Bonjour,
J’ai moi aussi rencontré ce problème que j’ai résolu en changeant la première ligne par .
Si le prénom de l’utilisateur connecté ne s’affiche pas c’est normal car le profil d’administration ne présente en général pas de prénom. Pour résoudre ce problème tu peux changer user_firstname par user_login qui fera apparaître l’identifiant en lieu et place du prénom.
Maxime BJ
Le 4 septembre 2020
Il y a le user_nicename aussi, c’est le nom choisi par l’utilisateur pour apparaitre sur le site (prénom, nom complet, pseudo…)
Emilie
Le 2 septembre 2021
Bonjour,
Tout d’abord merci pour cette formation de grande qualité !
Il y a malheureusement un problème d’affichage sur les premiers blocs « PHP » et le code n’est pas lisible dans ces-derniers.
Maxime BJ
Le 3 septembre 2021
C’est un souci de cache, j’ai dû le régler normalement. Si ça ne marche toujours pas, essaie de recharger la page avec CTRL + Maj + R pour forcer à vider le cache local !
Romain
Le 31 juillet 2022
Bonjour,
Tout d’abord merci pour cette formation.
Le code donné pour Conditionnel tags dans la template archive est a copier après le code donné dans le cours précedent ?
Maxime BJ
Le 31 juillet 2022
il n’y a pas d’exemple précis : ces codes seront donc à utiliser lorsque tu en auras besoin uniquement !