Utiliser des balises conditionnelles dans WordPress
Publié: 2012-12-27Voyons comment exécuter des fonctions personnalisées dans vos thèmes différents emplacements de crochet en fonction de certaines conditions remplies et retournant oui.
Si vous utilisez un cadre de thème premium comme Genesis, vous aurez accès à un guide de l'utilisateur.
Le guide de l'utilisateur contient généralement des extraits de code contenant des fonctions personnalisées.
Ces fonctions personnalisées peuvent être exécutées dans des emplacements de thème spécifiques à l'aide des crochets d'action de vos thèmes.
Tout ce que vous avez à faire est de coller l'extrait de code dans le fichier functions.php de vos thèmes enfants pour personnaliser les fonctions de votre thème.
Chaque cadre de thème utilise des crochets différents, mais ils font à peu près la même chose, on leur donne juste des noms différents comme :
thesis_after_post genesis_after_post woo_post_after
Ces 3 exemples s'exécutent tous après la fin de la publication, où vous pouvez ajouter une zone de widget, une bannière ou une boîte d'inscription aux e-mails avec des boutons de partage/suivi social.
Mais que se passe-t-il si vous souhaitez que la fonction personnalisée ne s'exécute qu'à un emplacement de crochet spécifique en fonction de certaines conditions, par exemple ? Par exemple:
- Uniquement sur les messages uniques : is_single()
- Uniquement sur les publications d'une catégorie spécifique : is_category()
- Uniquement sur une page d'archive : is_archive()
- Uniquement sur la page d'accueil : is_home()
L'ajout d'une balise conditionnelle à votre fonction personnalisée qui s'exécute à l'emplacement du crochet de vos thèmes vous permet d'exécuter la fonction uniquement si la condition renvoie oui.
Une fois que vous êtes à l'aise avec les fonctions personnalisées et que vous comprenez où et comment fonctionnent les crochets d'action de vos thèmes, vous pouvez aller plus loin en utilisant des balises conditionnelles ou des instructions conditionnelles comme certains développeurs les appellent.
Alors, comment utiliser les instructions conditionnelles ?
Exemples de balises conditionnelles
Voici quelques balises conditionnelles courantes utilisées par les concepteurs WordPress ainsi que par les développeurs de thèmes et de plugins.
is_home() is_category() is_single() is_page()
Tout d'abord, examinons l'utilisation de balises conditionnelles basées sur plusieurs déclarations.
is_single & in_category
if (is_single() && in_category('134'))
if (is_single() && in_category('web-design'))
Ces deux extraits de code font exactement la même chose et contiennent 2 balises conditionnelles.
Le premier utilise l'identifiant de catégorie 134 et le second utilise le slug de catégorie 'web-design'.
Toute fonction que vous incluez avec ce code ne s'exécutera que sur des publications uniques dans la catégorie qui contient un identifiant de publication de 134 ou un slug de page 'web-design'. C'est clairement la catégorie de conception de sites Web.
Paramètres
Comme vous pouvez le voir dans l'exemple ci-dessus, vous pouvez utiliser différents paramètres avec des balises conditionnelles telles que :
- ID de publication
- Titre de l'article
- Limace de poste
Certaines balises conditionnelles comme la balise is_home() n'excluent aucun paramètre, probablement parce qu'elles n'en ont pas vraiment besoin.
est_page
if (is_page('4289'))
if (is_page('contact'))
Ces deux balises conditionnelles font exactement la même chose.
Le premier utilise les pages post id de 4289 et le second le nom de la page et le slug 'contact'.
Les fonctions que vous incluez avec cette balise ne s'exécuteront que sur la page de contact.
Balises conditionnelles de la page d'accueil
Les utilisations les plus courantes des balises is_home seraient d'afficher quelque chose uniquement sur la page d'accueil ou d'exclure la page d'accueil de la fonction.
is_home
if (!is_home()
Ce code contient le ! avant la balise conditionnelle home_page afin d'exclure la page d'accueil de la fonction.
if (is_home()
Ce code crée une condition qui ne s'applique qu'à la page d'accueil.
Exemple de travail
Si vous copiez et collez le code suivant à l'aide d'un éditeur de code, dans votre fichier de fonctions de thèmes enfants, vous constaterez qu'il imprime le texte après l'en-tête uniquement sur les publications individuelles.
add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }
Le code ci-dessus utilise la position du crochet genesis_entry_footer
avec la balise conditionnelle is_singular('post')
et imprime le texte après le contenu sur des articles uniques uniquement. Ceci est un exemple classique montrant comment utiliser des balises conditionnelles dans une fonction personnalisée avec les crochets d'action de vos thèmes.
Balises conditionnelles avec tableaux
Vous pouvez également ajouter un tableau à votre instruction conditionnelle.
est_page (tableau
if (is_page(array('contact','37290'))
Vous pouvez ajouter plus de pages à ce tableau simplement en les incluant dans ce tableau, séparées par une virgule.
Cette fonction ne s'exécutera que sur la page de contact et la page qui contient un identifiant de publication de 37290.
Sortie de texte/HTML
Si vous souhaitez simplement afficher du texte ou du HTML, vous pouvez ajouter une instruction conditionnelle aux crochets d'actions de vos thèmes. La façon la plus simple de le faire serait de coller la balise conditionnelle avec votre code HTML à l'aide d'un plugin hook.
if ( ! is_home()) { echo'Your Text Here'; }
Prenons une fonction commune avec action hook et ajoutons une balise conditionnelle.
Balises conditionnelles dans Genesis
Vous pouvez facilement ajouter l'un des extraits de code du thème Genesis à utiliser dans les thèmes StudioPress et inclure une balise conditionnelle avec le code.
/** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }
Ce code permet à l'utilisateur de styliser la page de catégorie vidéo à l'aide d'une classe personnalisée.
Le paramètre utilisé est le slug du didacticiel vidéo, mais vous pouvez utiliser le post.id ou le titre dans votre balise conditionnelle.
Balises conditionnelles dans la thèse
Prenons une fonction personnalisée du guide de l'utilisateur des thèmes DIY et ajoutons une instruction conditionnelle.
function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );
Cela masquera le menu de navigation sur la page de contact uniquement.
Nous pourrions utiliser différents paramètres pour la page de contact, notamment le slug de page, l'identifiant de publication ou le nom de la page.
Où mettre le code ?
Si vous utilisez un framework de thème premium, vous pouvez coller le code dans le fichier functions.php de vos thèmes enfants.
Ces frameworks offrent tous un plug-in ou un gestionnaire de crochet qui vous permet de coller le code à l'emplacement du crochet où vous souhaitez que le code soit exécuté en fonction de vos balises conditionnelles.
- Gestionnaire de Woo Hook
- Crochets simples Genesis
- Thèse, Headway & Crochets WordPress
De toute évidence, vous n'aurez pas besoin d'inclure le crochet d'action dans votre code si vous utilisez un gestionnaire de crochets.
Une autre option consiste à coller les balises conditionnelles directement dans vos fichiers de modèles de thèmes à l'emplacement où vous souhaitez exécuter la fonction en fonction de vos conditions. Ce n'est pas la meilleure pratique car vous perdrez le code lorsque vous mettrez à jour le thème.
Il est toujours préférable de créer un thème enfant et d'y apporter des modifications à vos fichiers de modèle. Mieux encore, utilisez les fonctions personnalisées que votre développeur de thème a déjà créées et collez le code dans le fichier de fonctions de votre thème enfant avec vos balises conditionnelles, une fois que les tests ont prouvé que cela fonctionne.
Balises conditionnelles WordPress et exemples
Vous trouverez une liste de toutes les balises conditionnelles WordPress avec des exemples dans le WordPress Codex.
Balises conditionnelles spécifiques au thème
Certains thèmes premium utilisent également leurs propres balises conditionnelles qui sont uniques à leur cadre de thème.
Woo Commerce en fait partie : Exemples :
is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.
En savoir plus sur l'utilisation des balises conditionnelles avec Woo Commerce.
Conclusion
L'utilisation d'un thème qui propose une large gamme d'extraits de code testés par le développeur est un énorme bonus. De cette façon, vous pouvez choisir l'une des balises conditionnelles proposées par WordPress et l'ajouter à votre extrait de code pour personnaliser votre thème comme vous le souhaitez.