Nous utilisons tous des déclarations conditionnelles dans nos développements sous WordPress, non ? Mais savez-vous tout intégré Balises conditionnelles WordPress? Elles sont tout simplement géniales car grâce à ces balises, il est très facile de créer des instructions conditionnelles. Vous pouvez par exemple afficher du contenu uniquement pour certains utilisateurs, ou charger des scripts uniquement si une page utilise un modèle personnalisé spécifique, ou même styliser une publication si cette publication est collante.
Les balises conditionnelles peuvent être utilisées dans vos thèmes ou dans vos plugins, cela n’a pas d’importance, mais notez que dans certains plugins il sera parfois un peu délicat d’utiliser certaines balises (en fait toutes les balises spécifiques aux thèmes).
Balises conditionnelles disponibles
Voici la liste des fonctions conditionnelles disponibles :
- comments_open
- has_tag
- has_term
- dans_catégorie
- est_404
- is_admin
- is_archive
- est_pièce jointe
- est_auteur
- is_category
- is_child_theme
- is_comments_popup
- is_date
- is_day
- is_feed
- is_front_page
- is_home
- est_mois
- is_multi_author
- est_multisite
- est_site_principal
- is_page
- is_page_template
- is_paged
- is_preview
- is_rtl
- is_search
- est célibataire
- is_singulier
- est_collant
- est_super_admin
- is_tag
- est_taxe
- est_heure
- is_trackback
- est_année
- pings_open
- post_type_existe
- is_post_type_hierarchical
- is_post_type_archive
- is_comments_popup
- taxonomie_existe
- is_new_day
- a_extrait
- has_nav_menu
- dans la boucle
- is_active_sidebar
- est_site_principal
- is_plugin_active
- is_child_theme
- current_theme_supports
Vous en connaissez probablement certains, mais connaissez-vous vraiment la différence entre is_single_() et is_singular() ? Ou entre id_day() et is_date() ? Saviez-vous que is_preview() ? Pour comprendre le fonctionnement de chaque fonction, cliquez simplement sur le nom de la balise et lisez attentivement les instructions du codex.
Toutes les balises conditionnelles renvoient VRAI ou FAUX
Les balises conditionnelles sont l’une de mes fonctionnalités intégrées préférées de WordPress et je vous encourage vraiment à les utiliser largement dans vos codes. Toutes les fonctions renvoient toujours TRUE ou FALSE, jamais des ID ou array().
Une relation étroite avec la hiérarchie des modèles
Comme vous le savez peut-être, WordPress utilise un modèle vraiment puissant hiérarchie système. Eh bien, l’utilisation de balises conditionnelles est étroitement liée à cette hiérarchie. C’est le principe utilisé pour sélectionner la page modèle à utiliser en fonction de l’URL que vous visitez.
Les balises conditionnelles acceptent de nombreux arguments
Lorsque vous utilisez ces balises conditionnelles, vous devez savoir que vous pouvez leur transmettre différentes variables telles que des ID, des slug ou des tableaux. Voici un exemple tiré du codex avec la fonction is_author() :
- est_auteur()
- Lorsqu’une page d’auteur est affichée.
- is_author( '4' )
- Lorsque la page d’archive pour le numéro d’auteur (ID) 4 est affichée.
- is_author( 'Vivian' )
- Lorsque la page d’archive de l’auteur avec surnom « Vivian » est affichée.
- is_author( 'john-jones' )
- Lorsque la page d’archive de l’auteur avec Nicename « john-jones » est affichée.
- is_author( array( 4, 'john-jones', 'Vivian' ) )
- Lorsque la page d’archive de l’auteur est soit l’ID utilisateur 4, soit user_nicename « john-jones », ou surnom « Viviane ».
Exemples
C’est ainsi que fonctionnent presque toutes les fonctions conditionnelles, mais vous pouvez bien sûr combiner de nombreuses conditions :
if ( is_home() && in_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) ) ) {
the_content();
}
else {
the_excerpt();
}
ou vous pouvez faire une action si une situation ou une autre se produit :
if ( is_home() || in_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) ) ) {
the_content();
}
else {
the_excerpt();
}
Et si vous voulez faire une condition négative, utilisez ” ! » :
$paged = $wp_query->get( 'page' );
if ( ! $paged || $paged < 2 )
{
// This is not a paginated page (or it's simply the first page of a paginated page/post)
}
else
{
// This is a paginated page.
}
Et enfin, l’utilisation de balises conditionnelles est comme n’importe quelle autre instruction PHP « else if » :
if ( is_page( 'about' ) || '2' == $post->post_parent ) {
// the page is "About", or the parent of the page is "About"
$bannerimg = 'about.jpg';
} elseif ( is_page( 'learning' ) || '56' == $post->post_parent ) {
$bannerimg = 'teaching.jpg';
} elseif ( is_page( 'admissions' ) || '15' == $post->post_parent ) {
$bannerimg = 'admissions.jpg';
} else {
$bannerimg = 'home.jpg'; // just in case we are at an unclassified page, perhaps the home page
}
Création de balises conditionnelles personnalisées
Dans certains cas, vous devez créer vos fonctions conditionnelles personnalisées. C’est assez facile à faire, mais très souvent, les noms de fonctions ne suivent pas la même logique que celle utilisée par les développeurs principaux. Veuillez utiliser la même convention de nommage en utilisant un préfixe tel que « est_« , « a_« , « dans_« . Ceci est très utile en particulier si vous n’êtes pas la seule personne à travailler sur un script spécifique.