# Un export de theme.json aux valeurs par défaut jamais explicitées

> Un thème enfant hérite silencieusement des réglages de son parent. Au moment d'un export, cet héritage disparaît, et personne ne s'en aperçoit avant la mise en ligne ailleurs.

- Auteur : WordPress Développement
- Publié le : 2023-10-04
- Mis à jour le : 2023-10-04
- Catégorie : Éditeur de site (FSE)
- URL : https://www.wpmoderne.fr/fse/export-theme-json-valeurs-par-defaut-jamais-explicitees/

## L’essentiel

- Un theme.json de thème enfant ne contient que ce qu'il surcharge explicitement
- L'export via l'éditeur de site ne recopie pas les fichiers du thème parent
- Documenter les réglages hérités évite la surprise au moment de la réutilisation

Un theme.json de thème enfant peut ne contenir aucune ligne pour un réglage pourtant parfaitement visible à l'écran — parce que ce réglage vient entièrement du thème parent, et que rien n'oblige à le recopier pour qu'il s'applique. C'est un fonctionnement parfaitement normal de l'héritage entre thème parent et thème enfant, mais il devient un piège précis au moment d'exporter ce thème enfant pour le réutiliser ailleurs, sans son parent.

## Définition : ce qu'un thème enfant surcharge vraiment

Quand un thème enfant définit son propre `theme.json`, WordPress fusionne ses réglages avec ceux du thème parent : les clés présentes dans le fichier enfant remplacent celles du parent, et toutes les autres restent héritées telles quelles. Un thème enfant qui ne modifie que sa palette de couleurs peut ainsi afficher, dans l'éditeur, des tailles de police, des espacements et des styles d'éléments qui n'apparaissent nulle part dans son propre fichier — ils viennent intégralement du parent.

## Fonctionnement interne : ce que l'export recopie réellement

> L'essentiel à retenir : Un theme.json de thème enfant ne contient que ce qu'il surcharge explicitement ; L'export via l'éditeur de site ne recopie pas les fichiers du thème parent ; Documenter les réglages hérités évite la surprise au moment de la réutilisation

L'export d'un thème depuis l'écran Outils de l'éditeur de site produit une archive contenant les fichiers du thème actif tel qu'il est structuré sur le disque : ses propres templates, ses propres template parts, et son propre `theme.json`. Le thème parent n'est pas inclus dans cette archive, puisqu'il s'agit d'un thème séparé, installé indépendamment. Un thème enfant exporté seul perd donc, dans les faits, tout ce qu'il héritait silencieusement.

```
mon-theme-enfant/
├── theme.json          ← seules les surcharges explicites
├── style.css            ← déclare Template: mon-theme-parent
└── templates/
    └── index.html
```

Installé sur un autre site sans son thème parent d'origine, ce thème enfant ne peut même pas s'activer : WordPress exige la présence du thème déclaré dans l'en-tête `Template` de `style.css`. Mais le problème se pose aussi de façon plus insidieuse quand le parent existe bien sur le site de destination, dans une version différente, dont les valeurs par défaut ont changé entre-temps.

## Cas d'usage : la surprise du réglage disparu

Un thème enfant qui n'avait jamais eu besoin de fixer explicitement une taille de police d'en-tête, parce que celle du parent convenait, se retrouve avec un en-tête visuellement différent si le thème parent installé sur le nouveau site a modifié cette valeur par défaut entre deux versions. Rien dans le fichier `theme.json` de l'enfant n'indique qu'une taille précise était attendue : elle n'avait jamais eu besoin d'être écrite, puisqu'elle correspondait déjà à la valeur héritée.

## Comment documenter l'héritage avant qu'il ne pose problème

La solution la plus fiable reste d'expliciter, dans le `theme.json` de l'enfant, les valeurs dont on dépend réellement, même si elles reprennent exactement celles du parent au moment de l'écriture. Cela revient à figer volontairement un héritage qu'on juge important pour l'identité visuelle du thème :

```
{
  "version": 2,
  "settings": {
    "typography": {
      "fontSizes": [
        { "slug": "large", "size": "2rem", "name": "Grand" }
      ]
    }
  }
}
```

Une alternative plus légère consiste à documenter, dans un fichier séparé au thème, la liste des réglages du parent dont le thème enfant dépend explicitement, sans les dupliquer dans `theme.json` lui-même — utile quand on préfère garder le fichier aussi court que possible tout en gardant une trace pour un futur repreneur.

## Pièges à connaître

- vérifier, avant tout export destiné à une réutilisation sur un autre site, que le thème parent installé à destination correspond à la même version que celle utilisée au moment de la conception ;
- ne pas confondre l'absence d'une clé dans le `theme.json` enfant avec l'absence du réglage lui-même : l'un ne dit rien de l'autre ;
- se méfier des outils qui recréent un thème à partir de l'état courant de l'éditeur : ils capturent l'état visuel final, pas la provenance de chaque valeur, ce qui peut aussi figer un réglage qu'on croyait hérité alors qu'il avait été modifié localement sans plus s'en souvenir.

> Avant tout export destiné à voyager sans son thème parent, nous listons manuellement les réglages hérités qui comptent réellement pour l'identité du site : cinq minutes de vérification évitent une régression visuelle découverte bien après la mise en ligne.

## Ce qu'il faut retenir

L'héritage entre thème parent et thème enfant est une force du modèle de thème hybride, pas un défaut : il évite de dupliquer des réglages communs. Mais cette même force devient un angle mort au moment de l'export, puisqu'un fichier `theme.json` ne documente jamais ce qu'il ne surcharge pas. La vigilance doit porter sur ce silence, précisément parce qu'il ne génère aucune erreur visible tant que le contexte d'origine reste inchangé.
