Depuis que la Full Site Editing s’est stabilisée avec WordPress 6.0 sorti en mai dernier, une question revient souvent dans les échanges avec mes clients : comment modifier l’en-tête ou le pied de page sans toucher au code du thème ? La réponse tient en trois mots : les template parts.
Ce mécanisme, disponible depuis WordPress 5.9 et largement enrichi dans l’éditeur de site de la version 6.0, permet de découper un gabarit en zones réutilisables, modifiables visuellement, et partagées entre tous les templates qui les appellent. Voyons comment ça fonctionne concrètement, du fichier source jusqu’à l’interface de l’éditeur.
Qu’est-ce qu’un template part, exactement
Un template part est un fragment de contenu composé de blocs Gutenberg, destiné à être inséré dans plusieurs gabarits différents. Les deux exemples les plus courants sont l’en-tête et le pied de page, mais rien n’empêche de créer un template part pour une bannière promotionnelle, une barre latérale, ou un bloc d’appel à l’action répété sur plusieurs pages.
Où placer header.html et footer.html
Dans un thème bloc, les template parts par défaut vivent dans le dossier parts/ à la racine du thème, sous forme de fichiers HTML contenant des commentaires de bloc, exactement comme les fichiers du dossier templates/.

mon-theme/
├── theme.json
├── templates/
│ └── index.html
└── parts/
├── header.html
└── footer.html
Pour qu’un template soit reconnu et proposé automatiquement dans l’éditeur, il faut également le déclarer dans theme.json, sous la clé templateParts :
{
"templateParts": [
{
"name": "header",
"title": "En-tête",
"area": "header"
},
{
"name": "footer",
"title": "Pied de page",
"area": "footer"
}
]
}
La propriété area indique à WordPress la fonction sémantique du fragment : header, footer, ou uncategorized pour tout le reste. Cela conditionne notamment la balise HTML générée automatiquement autour du contenu quand on insère le bloc dans l’éditeur.
Le bloc Template Part dans l’éditeur
Une fois ces fichiers en place, un utilisateur peut insérer le bloc Template Part depuis l’inserteur de blocs, choisir parmi les zones déclarées, et le fragment s’affiche directement dans la page en cours d’édition. Dans un fichier de gabarit, on l’appelle avec le commentaire de bloc suivant :
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
L’attribut slug correspond au nom du fichier sans extension, et tagName permet de choisir la balise HTML englobante, ici header plutôt que la div par défaut. C’est une bonne pratique pour conserver une structure sémantique propre, dans la continuité de ce qu’on ferait sur un thème accessible.
wp_template_part, le type de contenu sous le capot
Techniquement, chaque template part activé dans l’éditeur devient une entrée du type de contenu personnalisé wp_template_part, stockée en base de données comme n’importe quel article. Tant que l’utilisateur n’a pas modifié le fragment depuis l’éditeur de site, WordPress continue de lire directement le fichier HTML du thème. Dès qu’une modification est enregistrée via l’interface, une entrée est créée en base et prend le pas sur le fichier source, exactement selon le même mécanisme que les templates complets.
Ce comportement, hérité du système de résolution de templates introduit avec la Full Site Editing, permet de livrer un thème avec des valeurs par défaut solides tout en laissant l’utilisateur final personnaliser librement son en-tête ou son pied de page sans toucher au code.
- Fichier du thème non modifié : WordPress sert directement
parts/header.html - Fragment personnalisé via l’éditeur : WordPress sert la version stockée en base, de type
wp_template_part - Possibilité de revenir à la version du thème via l’option « Effacer la personnalisation » dans l’éditeur de site
L’éditeur de site : modifier visuellement ces zones
L’éditeur de site, accessible depuis Apparence → Éditeur sur un thème bloc, propose une entrée dédiée aux template parts, listant tous ceux déclarés dans theme.json. On peut y accéder directement, indépendamment d’un template complet, pour retoucher uniquement l’en-tête par exemple, avec un aperçu isolé du fragment.
Cette séparation entre templates complets et template parts est l’un des grands apports de l’éditeur de site version 6.0 : elle rend beaucoup plus clair ce qui appartient à la structure globale du site et ce qui est un fragment réutilisable, une distinction qui manquait cruellement aux premières versions expérimentales de la Full Site Editing en 2021.
Mon conseil : découpez toujours vos template parts par fonction, pas par page. Un en-tête unique réutilisé partout est plus facile à maintenir que trois en-têtes légèrement différents dupliqués dans plusieurs templates, même si la tentation existe au début d’un projet.
En résumé
Les template parts structurent un thème bloc en zones réutilisables, gérées par le type de contenu wp_template_part, et rendues modifiables visuellement grâce à l’éditeur de site. Bien les organiser dès la conception du thème, en les déclarant proprement dans theme.json et en leur attribuant la bonne area sémantique, facilite énormément la vie des utilisateurs finaux qui souhaitent personnaliser leur site sans écrire une ligne de code.