Aller au contenu
Référence

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.

  1. front-page.html
  2. home.html
  3. 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).

  1. home.html
  2. index.html

Article individuel

Un article de blog individuel.

  1. single-post-{slug}.html
  2. single-post.html
  3. single.html
  4. singular.html
  5. index.html

Type de publication personnalisé individuel

Une entrée individuelle d'un type de publication personnalisé (par exemple un « livre »).

  1. single-{post-type}-{slug}.html
  2. single-{post-type}.html
  3. single.html
  4. singular.html
  5. 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.

  1. page-{slug}.html
  2. page-{id}.html
  3. page.html
  4. singular.html
  5. 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.

  1. {custom-template}.html
  2. page-{slug}.html
  3. page-{id}.html
  4. page.html
  5. singular.html
  6. 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.

  1. category-{slug}.html
  2. category-{id}.html
  3. category.html
  4. archive.html
  5. index.html

Archive d'étiquette

L'archive qui liste les articles portant une étiquette.

  1. tag-{slug}.html
  2. tag-{id}.html
  3. tag.html
  4. archive.html
  5. index.html

Archive de taxonomie personnalisée

L'archive d'un terme d'une taxonomie personnalisée.

  1. taxonomy-{taxonomy}-{term}.html
  2. taxonomy-{taxonomy}.html
  3. taxonomy.html
  4. archive.html
  5. index.html

Archive d'auteur

L'archive des articles d'un auteur.

  1. author-{nicename}.html
  2. author-{id}.html
  3. author.html
  4. archive.html
  5. index.html

Archive de date

Une archive par année / mois / jour.

  1. date.html
  2. archive.html
  3. index.html

Archive de type de publication

L'index d'archive d'un type de publication personnalisé pour lequel has_archive est activé.

  1. archive-{post-type}.html
  2. archive.html
  3. index.html

Résultats de recherche

La page de résultats d'une recherche sur le site.

  1. search.html
  2. index.html

404 (introuvable)

Affichée lorsqu'aucun contenu ne correspond à l'URL.

  1. 404.html
  2. index.html

Page de fichier joint

La page d'un fichier média joint individuel.

  1. attachment.html
  2. single.html
  3. singular.html
  4. 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.

  1. page-privacy-policy.html
  2. privacy-policy.html
  3. page.html
  4. singular.html
  5. 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 ».