Les balises conditionnelles WordPress sont une excellente fonctionnalité de WordPress qui vous permet de contrôler le contenu affiché sur une page. Il existe des balises conditionnelles pour différentes zones de votre site Web, telles que votre page d'accueil, vos articles de blog et vos pages. Cela vous permet de modifier ce qui est affiché sur votre site Web. Par exemple, vous pourriez changer le logo de votre site Web dans différentes zones de votre site Web.
Dans ce tutoriel, j'expliquerai quelles balises conditionnelles sont disponibles pour vous et je vous montrerai comment elles peuvent être utilisées dans les thèmes et les plugins.
Comment fonctionnent les balises conditionnelles WordPress
Les balises conditionnelles sont un type de données booléen qui ne peut renvoyer que vrai ou faux. La balise is_home(), par exemple, fait référence à l'index du blog. Nous pouvons utiliser cette balise pour afficher un message aux visiteurs de notre blog. Ce message ne sera pas affiché ailleurs.
Le code est simple. Tout ce que nous faisons ci-dessous, c'est de vérifier si la page affichée est la page d'index du blog. Si c'est le cas, nous affichons notre message.
<?php
if ( is_home()) {
echo "Welcome to Our Blog!!";
}
?>
Ce qui précède est un exemple basique de ce qui peut être réalisé en utilisant des balises conditionnelles, cependant, c'est essentiellement tout ce qu'il y a à savoir. Vous vérifiez simplement le type de page qui est affiché. Selon que le résultat est vrai ou faux, un autre morceau de code est exécuté.
Avant de regarder d'autres exemples sur la façon dont les balises conditionnelles peuvent être utilisées, examinons d'abord les balises conditionnelles populaires que vous êtes susceptible de voir utilisées dans vos thèmes WordPress.
- is_home() – Vérifie si l’index des articles de blog est affiché. Il se peut que ce soit ou non votre page d’accueil.
- is_front_page() – Vérifie si votre page d’accueil est affichée. Cela fonctionne que les paramètres de votre page d’accueil soient configurés pour afficher les articles de blog (c’est-à-dire l’index du blog) ou une page statique.
- is_single() – Vérifie si un type quelconque d’article unique est affiché (à l’exclusion des pièces jointes).
- is_attachment() – Vérifie si une pièce jointe est affichée.
- is_page() – Vérifie si une page est affichée.
- is_singular() – Vérifie si un article unique, une pièce jointe ou une page est affiché. La valeur true est retournée si l’une de ces conditions est remplie.
- is_category() – Vérifie si une page d’archive de catégorie est affichée.
- is_search() – Vérifie si une page de résultats de recherche est affichée.
- is_tag() – Vérifie si une page d’archive d’étiquette est affichée.
- is_author() – Vérifie si une page d’archive d’auteur est affichée.
- is_archive() – Vérifie si un type quelconque de page d’archive est affiché, y compris les archives de catégorie, d’étiquette, de date et d’auteur.
- is_sticky() – Vérifie si un article a été défini comme épinglé.
- is_multi_author() – Vérifie si plus d’un auteur a publié des articles sur le site web. La valeur true est retournée si deux personnes ou plus ont publié des articles. Si un seul auteur a publié des articles, ou si aucun article n’a été publié, la valeur false est retournée.
Il existe six balises conditionnelles basées sur le temps qui vous seront également utiles. Ces balises font référence aux pages d'archives de dates. Par exemple, l'URL http://www.votresite.com/2013/12/ est une page d'archive basée sur le mois.
Si l'une des balises conditionnelles suivantes retourne true, is_archive() retournerait également true.
- is_date() – Vérifie s’il s’agit d’une page d’archive basée sur la date.
- is_year() – Vérifie s’il s’agit d’une page d’archive basée sur l’année.
- is_month() – Vérifie s’il s’agit d’une page d’archive basée sur le mois.
- is_day() – Vérifie s’il s’agit d’une page d’archive basée sur le jour.
- is_time() – Vérifie s’il s’agit d’une page d’archive basée sur l’heure.
- is_new_day() – Vérifie si aujourd’hui est un nouveau jour. Si l’article actuel a été publié un jour différent du précédent, la valeur true sera retournée. La valeur false sera retournée si les deux articles ont été publiés le même jour.
Vous rencontrerez fréquemment des balises conditionnelles telles que is_home() et is_single(), mais vous n'avez pas besoin de toutes les mémoriser. La plupart des utilisateurs de WordPress se réfèrent au codex WordPress pour trouver la balise conditionnelle appropriée lorsqu'ils ont besoin de configurer une fonction conditionnelle.
Exemples de balises conditionnelles
De nombreuses balises conditionnelles permettent de passer des paramètres à la fonction. Cela vous donne beaucoup plus de contrôle sur les conditions qui doivent être remplies avant que quelque chose ne soit exécuté. is_page() en est un bon exemple. Cette balise vous permet de vérifier si la page affichée est bien une page. is_page() renverra une valeur true si n'importe quelle page est affichée, mais vous devez spécifier le paramètre $page si vous voulez être plus précis. Le paramètre $page peut être l'ID de la page, le titre de la page ou le slug de la page.
Considérons un site web régulier qui a une page « À propos » et que vous souhaitez personnaliser différemment de toutes les autres pages. Par exemple, vous pourriez afficher une photographie de votre entreprise en haut de la barre latérale, ou vous pourriez afficher des informations supplémentaires en bas de la page « À propos ».
Pour ce faire, vous devez définir le paramètre $page. Si l'ID de la page était 10, vous pourriez ouvrir votre instruction conditionnelle avec quelque chose comme ceci :
if ( is_page(10) ) {
Une page spécifique peut également être spécifiée en passant le titre de la page à la fonction.
if ( is_page( 'About Us' ) ) {
Le slug de la page peut également être utilisé. Comme vous vous en souvenez peut-être, le slug de la page est l'identifiant nommé unique à la fin de l'URL. Si l'URL de votre page « À propos » était www.votresite.com/a-propos-de-notre-entreprise/, le slug de la page serait a-propos-de-notre-entreprise.
if ( is_page( 'about-our-company' ) ) {
Certains tags conditionnels, tels que is_page(), peuvent également passer des paramètres dans un tableau. L'instruction conditionnelle suivante renverra une valeur vraie si l'une des conditions est vraie.
if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {
Il est courant pour les développeurs de définir plus d'une condition lors de l'utilisation de tags conditionnels. Revenons à la tâche simple d'afficher un message de bienvenue aux visiteurs du blog. C'est quelque chose qu'un site web d'entreprise pourrait vouloir ajouter à sa section blog mais pas à d'autres sections de son site web (par exemple, page d'accueil, page de contact, page « À propos », etc.).
Ils peuvent le faire en utilisant les tags conditionnels is_home() et is_single() ; qui représentent respectivement l'index du blog et les articles uniques. Pour afficher un message dans les deux zones, vous devez utiliser l'opérateur logique OU ||. Ceci est illustré dans le code ci-dessous. L'instruction if initiale vérifie si la page est l'index du blog ou un article unique. Si l'une ou l'autre est vraie, le message est affiché.
<?php
if ( is_home() || is_single() ) {
echo "Welcome to Our Blog!!";
}
?>
Un autre opérateur logique très utile est l'opérateur ET &&. Il est utilisé lorsque vous souhaitez que deux conditions ou plus soient vraies avant qu'une action ne soit effectuée. L'instruction if suivante vérifie si une page est à la fois une page d'archive et catégorisée sous la catégorie actualités. Dans les pages de la catégorie actualités, le message de bienvenue sera affiché. Rien ne sera affiché dans les autres catégories.
<?php
if ( is_archive() && is_category( 'News' ) ) {
echo "Welcome to the News Archives";
}
?>
Les opérateurs ET (AND) et OU (OR) peuvent être combinés. L'exemple ci-dessous est tiré du modèle functions.php du thème WordPress par défaut Twenty Thirteen. La fonction est utilisée pour afficher le titre de la page dans le navigateur, cependant seule une partie de la fonction est montrée ci-dessous.
L'instruction if renvoie une valeur de vrai s'il y a une description du site et que l'utilisateur visualise l'index du blog ou la page d'accueil. La description du site peut être saisie via le champ 'slogan' dans votre zone de réglages généraux. Si vous remplissez ce champ, sur votre index de blog et votre page d'accueil, la barre de titre affichera « Titre du site | Description du site » (note : le séparateur est affiché en utilisant la chaîne $sep dans le code ci-dessous). Si vous ne le faites pas, la barre de titre affichera « Titre du site ».
Comme vous pouvez le voir, is_home et _is_front_page sont considérés comme une seule entité en raison de l'opérateur OR. C'est pourquoi ils sont encapsulés entre parenthèses.
if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description";
Un autre opérateur logique PHP que vous pouvez utiliser est l'opérateur not !. C'est plus pratique à utiliser dans de nombreuses circonstances. Par exemple, disons que vous voulez afficher une photographie sur toutes vos pages sauf vos archives. Il n'est pas nécessaire de mettre en place une longue instruction conditionnelle qui demande « Est-ce la page d'accueil, est-ce un article unique, est-ce une page… ». Il est plus pratique de simplement demander « Est-ce que ce n'est pas une page d'archive ? ».
Pour ce faire, ajoutez simplement un point d'exclamation avant la balise conditionnelle. Le code ci-dessous montre à quel point c'est simple en pratique. Il affichera une image sur chaque page de votre site Web, à l'exception des pages d'archives.
<?php
if ( !is_archive() ) { ?>
<img src="photo.jpg" />
<?php
}
?>
Jusqu'à présent, nous avons examiné des exemples de base d'utilisation de balises conditionnelles où quelque chose est soit exécuté, soit non exécuté (c'est-à-dire si A est vrai, faites B). En pratique, il y a généralement une autre action à faire si une condition n'est pas remplie. De plus, il peut y avoir plusieurs conditions qui peuvent être remplies, avec une réponse différente pour chacune.
Plutôt que d'écrire de nombreuses instructions individuelles pour cela, il est pratique d'utiliser les instructions else et elseif. Cela vous permet un plus grand contrôle sur ce qui est affiché sur votre site Web.
Nous pouvons le montrer en utilisant un exemple. Disons que vous voulez afficher un logo différent sur votre site Web dans différentes zones de votre site Web. Comment feriez-vous cela ? La réponse est simple : nous utilisons les instructions else et elseif. Le code ci-dessous montre comment cela peut être réalisé.
<?php
if ( is_home() || is_front_page() ) { ?>
<img src="logo-home.png" />
<?php
} elseif ( is_category() ) { ?>
<img src="logo-category.png" />
<?php
} elseif ( is_single() ) { ?>
<img src="logo-blog-post.png" />
<?php
} elseif ( is_page() ) { ?>
<img src="logo-page.png" />
<?php
}
else { ?>
<img src="logo-general.png" />
<?php
}
?>
Selon la zone du site Web qu'un visiteur consulte, l'un des cinq logos serait affiché en utilisant le code ci-dessus. C'est un exemple simple qui illustre la facilité avec laquelle les instructions else et elseif peuvent être utilisées pour contrôler de nombreuses zones différentes de votre site Web.
Les instructions Elseif sont également utilisées dans d'autres parties de WordPress. La plupart des modèles functions.php les utilisent et de nombreux thèmes WordPress les utilisent pour modifier la façon dont le titre de leur site Web est affiché dans les navigateurs.
Plus de balises conditionnelles
Il existe un certain nombre de balises conditionnelles supplémentaires disponibles. Beaucoup d'entre elles sont utilisées par les développeurs dans les thèmes et les plugins.
Voici une liste d'autres balises conditionnelles qui sont à votre disposition.
- is_tax() – Vérifie si une page d’archive de taxonomie personnalisée est affichée.
- has_term() – Vérifie si l’article actuel a l’un des termes spécifiés.
- taxonomy_exists() – Vérifie si le nom de la taxonomie existe.
- post_type_exists() – Vérifie si un type d’article existe.
- is_post_type_hierarchical( $post_type ) – Vérifie si le type d’article est hiérarchique.
- is_post_type_archive() – Vérifie si la page d’archive d’un type d’article spécifique est affichée.
- is_comments_popup() – Vérifie si la fenêtre contextuelle des commentaires est ouverte.
- comments_open() – Vérifie si les commentaires sont autorisés pour l’article ou la page actuelle.
- pings_open() – Vérifie si les pings sont autorisés pour l’article ou la page actuelle.
- is_feed() – Vérifie si la requête actuelle concerne un flux.
- is_404() – Vérifie si une erreur 404 est affichée.
- is_paged() – Vérifie si la page que vous consultez actuellement est une page paginée autre que la première page. Les articles et les pages sont paginés lorsque vous utilisez la balise rapide nextpage dans votre contenu pour diviser de longs articles.
- is_trackback() – Vérifie si un trackback est utilisé.
- is_admin() – Vérifie si l'utilisateur est connecté à la zone d'administration. Elle n'est pas utilisée pour vérifier si un utilisateur a des privilèges d'administrateur, mais seulement s'il est connecté au tableau de bord WordPress.
- is_page_template() – Vérifie si la page consultée utilise un modèle de page. Un modèle de page spécifique peut être défini, si nécessaire.
- is_preview() – Vérifie si un article de blog est consulté en mode brouillon.
- has_excerpt() – Vérifie si l'article actuel a un extrait. Des articles spécifiques peuvent être définis.
- has_nav_menu() – Vérifie si un emplacement de menu a un menu assigné. Ceci est utilisé par les développeurs de thèmes pour afficher quelque chose si l'utilisateur n'a pas ajouté de menu.
- in_the_loop() – Vérifie si l'appelant est toujours dans la boucle WordPress.
- is_active_sidebar( $index ) – Vérifie si une barre latérale donnée est utilisée.
- is_multisite() – Vérifie si le multisite est pris en charge.
- is_main_site() – Vérifie si un site multisite est le site principal du réseau.
- is_super_admin() – Vérifie si un utilisateur est un super administrateur du réseau.
- is_plugin_active( $plugin ) – Vérifie si un plugin est activé.
- is_child_theme() – Vérifie si un thème enfant est utilisé.
- current_theme_supports( $feature ) – Vérifie si un thème prend en charge une fonctionnalité spécifique telle que les formats d'articles ou les images mises en avant.
Vérifiez également : Comment Supprimer les taxonomies par défaut.
Les balises conditionnelles sont un concept important de WordPress. En raison de leur utilité, peu de thèmes WordPress sont conçus sans elles. Une fois que vous aurez compris les instructions `else`, `elseif` et les opérateurs logiques tels que `AND`, `OR` et `Not`, vous serez en mesure de gérer n'importe quelle fonction conditionnelle.
J'espère que ce guide vous a aidé à apprendre comment utiliser les balises conditionnelles de WordPress dans vos thèmes.
Si vous avez aimé cet article, rejoignez IsItWP sur Twitter.
salut, j'ai un problème pour exécuter l'instruction conditionnelle…
if ( is_home() || is_front_page() || is_page_template(‘templates/template-home.php’) ) { // } elseif ( is_page() && $inner_disable == ‘disable’ ) { // } elseif (is_singular( array( ‘products’ ) ) ) { trav_get_template( ‘inner-3.php’, ‘/templates/inners’ ); }////got this working elseif ( is_page() && is_page_template( ‘templates/custom-page.php’ ) ) { trav_get_template( ‘inner-p.php’, ‘/templates/inners’ );////but not getting this result…instead getting the below one for this condition aswell. } else { trav_get_template( ‘inner-1.php’, ‘/templates/inners’ ); }
Recevez-vous un message d'erreur ?
Sauf que l'enseignement : { ?> avec l'accolade située à l'intérieur de la balise de fermeture php est une syntaxe incorrecte. Référez-vous aux tutoriels de code WP ou PHP.
C'est un très bon tutoriel. Il m'a beaucoup aidé à créer mon thème enfant.
Salut Martin, content que ça ait aidé. Suivez-nous sur Facebook et Twitter pour plus de tutoriels. 🙂
Bons conseils. Comprendre comment utiliser les balises conditionnelles est une exigence clé pour les développeurs WordPress. 🙂
Merci pour cela, je dois faire quelques travaux sur le site Web d'un client, donc un lien n'apparaîtra que dans une certaine catégorie de boutique, donc cela sera utile, merci.