Skip to content

Tout pour WordPress, le développement web — et plus encore

🖥 Comment afficher du contenu uniquement sur la page d'accueil de WordPress

🖥 Comment afficher du contenu uniquement sur la page d'accueil de WordPress

Vous ouvrez le panneau d’administration WordPress et vous réalisez que la bannière promotionnelle a sa place sur la page d’accueil, mais que sur les articles individuels elle paraît intrusive. Ou alors un widget d’abonnement qui collecte des emails sur l’accueil prend simplement trop de place dans le corps d’un article. Cela vous semble familier?

WordPress ne propose pas de bouton intégré «afficher uniquement sur la page d’accueil», mais la tâche se résout facilement avec deux lignes de PHP. Pas de plugin, pas de bidouillage hasardeux dans functions.php. Voici trois méthodes éprouvées, des balises conditionnelles aux templates de thème, avec des exemples de code clairs et une explication de la différence entre is_front_page() et is_home().

💡 Aperçu rapide:

  • Utilisez is_front_page() dans le header.php ou le footer.php de votre thème
  • Comprenez la différence entre is_front_page et is_home
  • Pour remplacer des blocs entiers, créez des fichiers de template distincts
  • Aucun plugin requis

Que sont les balises conditionnelles de WordPress

Les balises conditionnelles sont des fonctions PHP natives de WordPress qui vérifient des conditions et renvoient true ou false. Elles fonctionnent comme un embranchement: «si la page est la page d’accueil, afficher la bannière; sinon, ne rien faire.»

Le cœur de WordPress contient des dizaines de fonctions de ce type: is_single() pour les articles individuels, is_page() pour les pages, is_category() pour les catégories, is_404() pour les adresses inexistantes, is_search() pour la page de recherche, et d’autres. Elles vous permettent de contrôler précisément l’affichage du contenu sans éditer chaque template manuellement; la vérification s’exécute à la volée lors du chargement de la page.

Pour la tâche «page d’accueil uniquement», deux balises sont essentielles: is_front_page() et is_home(). Elles se ressemblent mais se comportent différemment selon les réglages de lecture, et la confusion entre les deux a coûté aux débutants de nombreuses heures de débogage.

Méthode 1: is_front_page(), l’outil principal

is_front_page() renvoie true lorsqu’un visiteur se trouve sur la page d’accueil du site, celle qui s’ouvre à l’URL racine (https://yoursite.com/). C’est votre outil principal pour la grande majorité des tâches de contenu réservé à l’accueil.

Syntaxe de base:

1<?php if ( is_front_page() ) : ?>
2 <div class="homepage-banner">
3 <p>Специальное предложение только для посетителей сайта!</p>
4 </div>
5<?php endif; ?>
6

Placez ce code dans header.php (juste après la balise ouvrante <body>) ou dans footer.php; la bannière apparaîtra exclusivement sur la page d’accueil et sera absente de toutes les autres pages.

Exemple d’affichage d’un bloc HTML personnalisé:

1<?php if ( is_front_page() ) : ?>
2 <section class="hero-promo">
3 <h2>Бесплатная консультация</h2>
4 <p>Оставьте заявку — и мы перезвоним в течение 15 минут.</p>
5 </section>
6<?php endif; ?>
7

La même approche fonctionne pour les scripts publicitaires, les styles personnalisés ou un shortcode distinct: enveloppez le bloc souhaité dans if ( is_front_page() ), et il se charge uniquement là où c’est nécessaire.

Nuance importante: la fonction doit être appelée après que WordPress a terminé la requête principale en base de données. Ne la placez pas dans functions.php en dehors des hooks; avant le déclenchement de l’action wp, elle renverra false. Emplacement sûr: à l’intérieur des fichiers de thème tels que header.php, footer.php, sidebar.php et front-page.php. Vous pouvez aussi utiliser les hooks: wp, template_redirect ou wp_head.

Méthode 2: is_home(), pour la page de blog

is_home() renvoie true lorsqu’un visiteur se trouve sur la page qui affiche les derniers articles du blog. Et c’est là que se cache un piège qui attrape presque tous les débutants.

Le code est tout aussi simple:

1<?php if ( is_home() ) : ?>
2 <p>Подпишитесь на нашу рассылку — новые статьи каждую неделю.</p>
3<?php endif; ?>

La différence réside dans les réglages. Allez dans le panneau d’administration: Réglages → Lecture → La page d’accueil affiche. Si «Vos derniers articles» est sélectionné, alors is_front_page() et is_home() fonctionnent de manière identique: les deux renvoient true sur la page d’accueil. Mais si «Une page statique» est sélectionné, alors:

  • is_front_page()true sur la page statique que vous avez désignée comme page d’accueil
  • is_home()true sur la page que vous avez désignée pour afficher les articles (même si elle se trouve physiquement à /blog/)

En d’autres termes: is_home() est liée à la page de blog, pas à la page d’accueil du site. Si vous avez un site vitrine statique et que le blog est à /blog/, alors is_home() sur la page d’accueil (/) renverra false.

Is_front_page() vs is_home(): tableau comparatif

Scénario

Réglages de lecture

is_front_page()

is_home()

Accueil = derniers articles

«Vos derniers articles»

true

true

Accueil = page statique (visiteur sur /)

Page statique + page de blog séparée

true

false

Page de blog = /blog/ (visiteur sur /blog/)

Page statique + page de blog séparée

false

true

Toute autre page ou article

N’importe quel réglage

false

false

La règle est simple: si vous avez besoin d’un contenu strictement sur la page d’accueil, utilisez is_front_page(). Si vous avez besoin d’un contenu sur la page qui affiche le flux d’articles (qu’il s’agisse ou non de la page d’accueil), utilisez is_home().

En pratique, la plupart des tâches se résolvent avec is_front_page(). is_home() est utile lorsque le blog se trouve sur une page séparée et que vous souhaitez, par exemple, afficher un widget «Articles populaires» spécifiquement à cet endroit, mais pas sur la page d’accueil vitrine.

Méthode 3: fichiers de template distincts

Lorsque vous devez remplacer non pas une ou deux lignes mais un bloc structurel entier (une barre latérale, un pied de page ou un en-tête), envelopper chaque élément dans un if devient fastidieux. WordPress prend en charge un mécanisme de fichiers de template spécifiques: vous créez un fichier pour une page particulière, et le cœur le prend automatiquement en charge.

Étape 1. Créez un nouveau fichier. Dans le dossier de votre thème, créez l’une des trois variantes:

  • sidebar-home.php, une barre latérale pour la page d’accueil
  • footer-home.php, un pied de page pour la page d’accueil
  • header-home.php, un en-tête pour la page d’accueil

Étape 2. Remplissez-le avec du contenu. Placez dans le fichier le HTML et le PHP qui doivent apparaître uniquement sur la page d’accueil. Par exemple, sidebar-home.php:

1<div class="homepage-sidebar">
2 <h3>О нашем проекте</h3>
3 <p>Мы помогаем малому бизнесу запускать сайты на WordPress с 2018 года.</p>
4
5 <h3>Подписка</h3>
6 <?php echo do_shortcode( '[newsletter_form]' ); ?>
7</div>
8

Étape 3. Appelez le fichier dans le template. Dans front-page.php ou index.php (selon votre thème), remplacez l’appel standard:

1<?php get_sidebar( 'home' ); ?>
2<?php get_footer( 'home' ); ?>
3<?php get_header( 'home' ); ?>

WordPress utilise l’argument 'home' pour substituer automatiquement les fichiers sidebar-home.php, footer-home.php et header-home.php respectivement. Si un fichier n’est pas trouvé, il revient au fichier standard sidebar.php.

Quand cette méthode se justifie-t-elle. Optez pour l’approche par template si:

  • Le bloc entier change (pas un simple bouton, mais toute la structure de la barre latérale)
  • Le thème utilise déjà front-page.php et la logique ne se mélange pas
  • Vous prévoyez de maintenir le site sur le long terme et souhaitez une organisation de fichiers propre

Pour de petites modifications, cette méthode est disproportionnée; la balise conditionnelle is_front_page() est suffisante.

Erreurs possibles et comment les éviter

Appel avant l’initialisation de la requête. Le problème le plus courant: is_front_page() dans functions.php sans hook. La fonction renvoie silencieusement false, et vous pensez que le code est cassé. Solution: enveloppez toujours la vérification dans un hook wp ou template_redirect:

1add_action( 'wp', 'my_homepage_content' );
2function my_homepage_content() {
3 if ( is_front_page() ) {
4 add_action( 'wp_head', 'my_homepage_banner' );
5 }
6}

Confusion avec les réglages de lecture. Si vous êtes passé d’une page d’accueil statique au flux des derniers articles et que vous l’avez oublié, is_home() se déclenche soudainement là où il ne le devrait pas. Vérifiez d’abord Réglages → Lecture.

ID de page codé en dur. Certains développeurs vérifient if ( get_the_ID() == 5 ) au lieu de is_front_page(). C’est fragile: changez la page d’accueil dans les réglages, et tout se casse. Utilisez les balises conditionnelles; elles suivent automatiquement les réglages.

Le sujet des balises conditionnelles de WordPress est abordé plus en profondeur dans cette vidéo, de is_page() aux conditions personnalisées pour les templates non standard. Si vous travaillez régulièrement avec des thèmes, 15 minutes de visionnage vous feront gagner des heures de débogage à l’avenir.

⁉️🤔 Questions fréquemment posées

Que choisir: is_front_page() ou is_home()?

Dans la plupart des cas, is_front_page(). Elle renvoie true sur la page d’accueil du site, qu’il s’agisse d’une page statique ou du flux d’articles. Utilisez is_home() uniquement lorsque vous avez spécifiquement besoin de la page de blog (par exemple, /blog/), et non de la page d’accueil.

Peut-on utiliser les deux balises simultanément?

Oui, la construction if ( is_home() && ! is_front_page() ) renvoie true uniquement sur la page de blog lorsqu’elle n’est pas la page d’accueil. Utile pour les sites avec une page d’accueil statique et une section articles séparée.

Est-ce que is_front_page() fonctionne avec les plugins de cache?

Oui, mais avec une nuance. Les balises conditionnelles s’exécutent côté serveur avant la livraison du HTML; les plugins de cache (WP Rocket, W3 Total Cache) n’affectent pas cela. Cependant, avec les blocs ESI (Edge Side Includes), vérifiez que votre plugin de cache les prend en charge.

Comment afficher un contenu différent sur la page d’accueil pour les utilisateurs connectés et les visiteurs non connectés?

Combinez is_front_page() avec is_user_logged_in(). Pour les utilisateurs connectés, un message d’accueil personnalisé; pour les visiteurs, un appel à l’action pour s’inscrire. Le code tient en cinq lignes et se place dans header.php:

1<?php if ( is_front_page() && is_user_logged_in() ) : ?>
2 <p>С возвращением! Вот ваши последние заказы.</p>
3<?php elseif ( is_front_page() ) : ?>
4 <p>Добро пожаловать! Зарегистрируйтесь для персональных скидок.</p>
5<?php endif; ?>

Un thème enfant a-t-il besoin de ses propres fichiers header-home.php?

Si le thème parent contient déjà header-home.php, le thème enfant en hérite automatiquement. Pour le surcharger, créez un fichier du même nom dans le dossier du thème enfant. WordPress cherche le template d’abord dans le thème enfant, puis seulement dans le parent.

Quoi utiliser en 2026: une balise conditionnelle ou un fichier séparé?

Le choix se résume à l’ampleur de la tâche. Retenez une règle simple: une ligne de code ou un bloc HTML, utilisez is_front_page(). Si c’est un bloc structurel entier (barre latérale, pied de page, en-tête) avec son propre balisage et sa propre logique qui change, créez des fichiers de template distincts.

En pratique, la plupart des tâches de contenu réservé à l’accueil se gèrent avec deux lignes d’une balise conditionnelle. C’est rapide, cela ne génère pas de fichiers supplémentaires dans le thème et cela se lit facilement lors de la maintenance du site six mois plus tard: vous n’avez pas à deviner pourquoi vous avez créé sidebar-home.php parce que vous voyez la vérification explicite directement dans le template.

Essayez dès maintenant: ouvrez le header.php de votre thème actif, trouvez l’emplacement après <body>, et ajoutez un bloc de test avec is_front_page(). Si tout fonctionne, vous maîtrisez les balises conditionnelles de WordPress en cinq minutes.