La hiérarchie des templates
Le principe
Quand un visiteur accède à une URL, WordPress détermine quel type de contenu est demandé, puis cherche le template le plus spécifique disponible dans ton thème. Si ce template n'existe pas, il descend vers quelque chose de plus générique — jusqu'à index.php en dernier recours.
C'est ce qu'on appelle la hiérarchie des templates. C'est la règle la plus importante à connaître pour développer des thèmes.
Les grandes familles de pages
Page d'accueil
WordPress cherche dans cet ordre :
front-page.php— si une page d'accueil statique est définie dans Réglageshome.php— page de blog (liste des articles récents)index.php
Page statique (ex. "À propos")
page-{slug}.php— ex.page-a-propos.phppour la page au slug "a-propos"page-{id}.php— ex.page-42.phppage.phpsingular.phpindex.php
Article de blog (single post)
single-{post-type}-{slug}.phpsingle-{post-type}.phpsingle.phpsingular.phpindex.php
Archive (catégorie, tag, auteur…)
category-{slug}.phpoutag-{slug}.phpcategory-{id}.phpoutag-{id}.phpcategory.phpoutag.phparchive.phpindex.php
Page de recherche
search.phpindex.php
Page 404
404.phpindex.php
La règle générale : le template le plus spécifique l'emporte. Et index.php est toujours le filet de sécurité final.
Exemple concret
Un visiteur accède à la catégorie "Tutoriels" (slug : tutoriels, ID : 5). WordPress cherche :
category-tutoriels.php— pas trouvécategory-5.php— pas trouvécategory.php— pas trouvéarchive.php— trouvé ! → utilise ce fichier
Si tu veux une mise en page spéciale pour cette catégorie uniquement, crée category-tutoriels.php. Pour toutes les catégories, category.php. Pour toutes les archives, archive.php.
Templates de parties : get_template_part()
Pour éviter la duplication de code, on peut découper les templates en parties réutilisables avec get_template_part() :
<?php get_template_part( 'template-parts/content', get_post_type() ); ?>
<!--
Cherche d'abord : template-parts/content-post.php
Puis : template-parts/content.php
-->
C'est la même logique de hiérarchie, mais pour des parties de template. On l'utilise pour factoriser l'affichage d'un article dans index.php, archive.php et search.php.
Comment savoir quel template est utilisé ?
Installe le plugin Query Monitor (gratuit, dans le dépôt WordPress). Il affiche dans la barre admin le template actuellement utilisé, les hooks déclenchés et les requêtes SQL. Indispensable pour déboguer un thème.
Tu n'as pas besoin de mémoriser toute la hiérarchie. Mémorise les cas courants (index, page, single, archive, 404) et consulte la documentation officielle pour les cas spéciaux.
- WordPress choisit le template le plus spécifique disponible dans ton thème
index.phpest toujours le dernier recours- Cas courants :
page.php(pages) ·single.php(articles) ·archive.php(listes) ·404.php front-page.php= page d'accueil statique ·home.php= liste des articlesget_template_part()pour découper les templates en parties réutilisables- Plugin Query Monitor pour voir quel template est actif en temps réel