Hiérarchie des modèles des thèmes de blocs WordPress
La hiérarchie complète des modèles des thèmes de blocs (FSE) : pour chaque type de requête, la liste ordonnée des modèles que WordPress recherche, du plus spécifique au plus général, avec repli sur index.html. L'équivalent, à l'ère des blocs, du schéma de hiérarchie classique.
Pour chaque requête, WordPress recherche ces modèles dans l'ordre — du plus spécifique au moins spécifique — et s'arrête au premier qui existe dans le dossier /templates de votre thème. La chaîne se termine toujours par index.html.
Page d'accueil
La page d'accueil du site, qu'elle affiche vos derniers articles ou une page statique.
- front-page.html
- home.html
- index.html
front-page.html wins regardless of the Settings → Reading choice. If the front page is a static page and there is no front-page.html, it falls through to the static-page chain, not home.html.
Index des articles du blog
La page qui liste vos derniers articles (la « page des articles » dans Réglages → Lecture).
- home.html
- index.html
Article individuel
Un article de blog individuel.
- single-post-{slug}.html
- single-post.html
- single.html
- singular.html
- index.html
Type de publication personnalisé individuel
Une entrée individuelle d'un type de publication personnalisé (par exemple un « livre »).
- single-{post-type}-{slug}.html
- single-{post-type}.html
- single.html
- singular.html
- index.html
Pour un type de publication « book » dont le slug est « dune » : single-book-dune.html, puis single-book.html, puis single.html.
Page statique
Une page WordPress classique.
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Page avec un modèle personnalisé
Une page à laquelle un modèle personnalisé a été attribué dans le panneau Modèle de l'éditeur.
- {custom-template}.html
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Les modèles personnalisés sont déclarés dans le tableau customTemplates de theme.json et se trouvent dans /templates. Le modèle attribué l'emporte sur toute la chaîne de la page.
Archive de catégorie
L'archive qui liste les articles d'une catégorie.
- category-{slug}.html
- category-{id}.html
- category.html
- archive.html
- index.html
Archive d'étiquette
L'archive qui liste les articles portant une étiquette.
- tag-{slug}.html
- tag-{id}.html
- tag.html
- archive.html
- index.html
Archive de taxonomie personnalisée
L'archive d'un terme d'une taxonomie personnalisée.
- taxonomy-{taxonomy}-{term}.html
- taxonomy-{taxonomy}.html
- taxonomy.html
- archive.html
- index.html
Archive d'auteur
L'archive des articles d'un auteur.
- author-{nicename}.html
- author-{id}.html
- author.html
- archive.html
- index.html
Archive de date
Une archive par année / mois / jour.
- date.html
- archive.html
- index.html
Archive de type de publication
L'index d'archive d'un type de publication personnalisé pour lequel has_archive est activé.
- archive-{post-type}.html
- archive.html
- index.html
Résultats de recherche
La page de résultats d'une recherche sur le site.
- search.html
- index.html
404 (introuvable)
Affichée lorsqu'aucun contenu ne correspond à l'URL.
- 404.html
- index.html
Page de fichier joint
La page d'un fichier média joint individuel.
- attachment.html
- single.html
- singular.html
- index.html
De nombreux sites désactivent complètement les pages de fichiers joints (leur contenu est trop pauvre). Si vous les conservez, voici la chaîne utilisée.
Page de politique de confidentialité
La page définie comme politique de confidentialité du site dans les Réglages.
- page-privacy-policy.html
- privacy-policy.html
- page.html
- singular.html
- index.html
En quoi cela diffère de la hiérarchie classique (PHP)
- Les modèles sont des fichiers .html situés dans /templates, et non des fichiers .php à la racine du thème. Il n'y a pas de single.php — c'est single.html.
- Les zones réutilisables (en-tête, pied de page) sont des PARTIES de modèle situées dans /parts, référencées via le bloc wp:template-part, et non par des appels PHP get_header() / get_footer().
- Il n'existe pas de chaîne get_template_part() ni de get_header()/get_footer(). La composition se fait à l'aide du bloc Partie de modèle (Template Part) à l'intérieur des fichiers .html.
- index.html est OBLIGATOIRE. Un block theme dépourvu de templates/index.html n'est pas un block theme valide — c'est le repli final obligatoire pour toutes les routes ci-dessus.
- Un thème est déclaré block theme par la PRÉSENCE de templates/index.html et d'un theme.json, et non par un quelconque indicateur d'en-tête.
- Vous pouvez modifier n'importe lequel de ces modèles dans l'éditeur de site (Apparence → Éditeur) et enregistrer les changements en base de données — ceux-ci REMPLACENT alors les fichiers du thème jusqu'à ce que vous effaciez la personnalisation. C'est ce qui déroute les personnes qui cherchent à comprendre « pourquoi ma modification de modèle ne change rien ».