vendredi 25 septembre 2026

À propos

Contact

Thèmes

Templates en base contre fichiers du thème : qui gagne et comment réconcilier

Comment fonctionnent les wp_template et wp_template_part enregistrés en base, leur priorité sur les fichiers du thème, et comment les réinitialiser ou les exporter proprement.

Par Clément Hadrot • 6 mai 2025 • 4 min de lecture • Aucun commentaire
Templates en base contre fichiers du thème : qui gagne et comment réconcilier

Un client nous a signalé une régression étrange : le template d’archive de son site, que nous avions livré avec une structure précise, affichait une mise en page différente après une modification qu’il avait faite lui-même depuis l’éditeur de site trois mois plus tôt. Le fichier archive.html du thème, lui, n’avait pas bougé d’un octet. La cause tient au fonctionnement propre des templates enregistrés en base de données, un mécanisme que beaucoup de développeurs découvrent après coup, souvent dans ce type de situation.

Ce guide explique ce mécanisme et la façon de le réconcilier, sans entrer dans le détail du workflow d’agence global autour de la synchronisation entre environnements, qui reste un sujet distinct.

Comment un template atterrit en base

Quand une personne modifie un template depuis l’éditeur de site — même un simple déplacement de bloc — WordPress ne réécrit jamais le fichier HTML du thème. Il crée ou met à jour un contenu de type wp_template en base de données, avec un slug identique au nom du fichier d’origine, et c’est ce contenu en base qui est servi en priorité à chaque affichage suivant.

wp post list --post_type=wp_template --allow-root
+----+---------------------+-------------+----------------------+
| ID | post_title          | post_name   | post_status          |
+----+---------------------+-------------+----------------------+
| 142| Archive             | archive     | publish              |
+----+---------------------+-------------+----------------------+

La commande WP-CLI wp post list --post_type=wp_template révèle immédiatement ces surcharges, ce qui en fait le premier réflexe de diagnostic face à un template qui ne correspond plus au fichier du thème.

Comprendre la priorité exacte

Le mécanisme de résolution suit un ordre précis : WordPress cherche d’abord un wp_template en base dont le slug correspond, associé au thème actif via un champ theme stocké sur le post. Ce n’est que si aucune entrée en base ne correspond que le fichier du thème (parent ou enfant) est utilisé.

SourcePriorité
wp_template en base, associé au thème actifLa plus haute
Fichier dans le thème enfantIntermédiaire
Fichier dans le thème parentLa plus basse
L'essentiel à retenir : Un template modifié dans l'éditeur est copié en base, pas dans le fichier ; Le contenu en base a priorité totale sur le fichier du thème correspondant ; L'export vers le thème remet le fichier et la base en cohérence

Réinitialiser un template modifié en base

Depuis l’éditeur de site, la liste des templates affiche une option de réinitialisation sur tout template qui possède une entrée personnalisée en base : elle supprime le wp_template correspondant et fait retomber l’affichage sur le fichier d’origine du thème. C’est l’opération que nous avons appliquée chez le client, une fois la cause identifiée, en accord avec lui pour repartir de la version livrée initialement.

Exporter un template modifié vers le thème

À l’inverse, quand la modification faite en base doit devenir la nouvelle version officielle du thème — ce qui était en réalité le souhait du client une fois la situation expliquée — WordPress propose une fonctionnalité d’export : l’éditeur de site génère un fichier ZIP contenant les templates et template parts modifiés, prêt à être intégré dans le dépôt du thème.

wp-content/themes/mon-theme/
  templates/
    archive.html   ← remplacé par le contenu exporté

Une fois ce fichier remplacé dans le dépôt et déployé, l’entrée wp_template en base devient redondante avec le fichier : nous recommandons de la supprimer via la réinitialisation décrite plus haut, pour que la base et le dépôt de code restent la seule source de vérité, sans double stockage silencieux.

Notre procédure pour éviter la récurrence

  1. Après toute session de travail du client dans l’éditeur de site, vérifier périodiquement (mensuellement sur nos contrats de maintenance) la présence de wp_template en base via WP-CLI.
  2. Pour chaque entrée trouvée, décider avec le client : réinitialiser si la modification était accidentelle, exporter vers le dépôt si elle doit être conservée.
  3. Documenter dans notre outil de suivi de projet toute décision d’export, pour garder une trace de l’origine de chaque évolution de template.

Ne considérez jamais qu’un fichier de template inchangé dans le dépôt garantit un rendu inchangé en production. La seule vérification fiable reste d’interroger directement la base via WP-CLI, le code du thème ne raconte qu’une partie de l’histoire.

En résumé

Les templates modifiés depuis l’éditeur de site vivent en base de données, avec une priorité totale sur les fichiers du thème, jusqu’à réinitialisation ou export explicite. Cette mécanique, invisible tant qu’on ne la connaît pas, explique la majorité des décalages entre ce que montre le dépôt de code et ce qu’affiche réellement le site en production.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi