Modifier directement les fichiers d’un thème WordPress parent est l’un des pièges classiques du débutant : tout fonctionne parfaitement, jusqu’au jour où une mise à jour du thème écrase silencieusement toutes vos personnalisations. Le thème enfant existe précisément pour éviter ce scénario catastrophe, et c’est une pratique que tout développeur WordPress sérieux doit maîtriser.
Le principe est simple sur le papier : créer un thème séparé qui hérite du thème parent, tout en pouvant surcharger n’importe lequel de ses fichiers ou styles. Dans la pratique, quelques subtilités méritent d’être expliquées pour éviter les erreurs les plus fréquentes, notamment sur le chargement des feuilles de style.
Structure minimale d’un thème enfant
Un thème enfant WordPress a besoin d’au minimum deux fichiers pour fonctionner : style.css et functions.php. Créez un nouveau dossier dans wp-content/themes/, par exemple mon-theme-enfant, puis commencez par l’en-tête obligatoire de style.css :
/*
Theme Name: Mon Theme Enfant
Template: twentytwenty
Description: Thème enfant basé sur Twenty Twenty
Version: 1.0.0
Author: Clément Hadrot
*/
La ligne Template est la clé de voûte de tout le système : elle doit correspondre exactement au nom du dossier du thème parent, tel qu’il apparaît dans wp-content/themes/. Une erreur de casse ou une faute de frappe ici, et WordPress refusera d’activer le thème enfant correctement.
Charger correctement les styles avec functions.php

Contrairement à une idée reçue, le simple en-tête Template ne suffit pas à charger automatiquement le CSS du parent. Il faut explicitement enqueuer les deux feuilles de style, celle du parent puis celle de l’enfant, via le hook wp_enqueue_scripts :
<?php
add_action( 'wp_enqueue_scripts', 'mon_theme_enfant_styles' );
function mon_theme_enfant_styles() {
wp_enqueue_style(
'style-parent',
get_template_directory_uri() . '/style.css'
);
wp_enqueue_style(
'style-enfant',
get_stylesheet_uri(),
array( 'style-parent' ),
wp_get_theme()->get( 'Version' )
);
}
Ici, la distinction entre deux fonctions est essentielle et source de confusion permanente chez les débutants :
get_template_directory_uri()pointe toujours vers le dossier du thème parentget_stylesheet_uri()pointe vers le fichierstyle.cssdu thème actif, donc l’enfant
Le tableau de dépendances array( 'style-parent' ) garantit que le CSS du parent se charge en premier, permettant à votre feuille de style enfant de le surcharger sans conflit d’ordre.
Surcharger un fichier de gabarit
Au-delà du CSS, un thème enfant peut redéfinir n’importe quel fichier de gabarit du parent : il suffit de créer un fichier portant exactement le même nom et le même chemin. Si le parent contient template-parts/content.php, créez ce même chemin dans l’enfant, et WordPress utilisera automatiquement votre version. Cette mécanique s’appuie directement sur la hiérarchie de templates que nous avons détaillée dans un précédent article : le thème enfant est simplement prioritaire sur le parent dans cette recherche.
Attention toutefois à functions.php, qui fait exception : contrairement aux autres fichiers, celui de l’enfant ne remplace pas celui du parent, il se charge en plus, et avant lui. Vous pouvez donc y ajouter des fonctions ou des hooks sans jamais casser la logique existante du parent.
Cas d’usage typiques
Le thème enfant est particulièrement pertinent dans ces situations :
- Vous utilisez un thème du répertoire officiel (Twenty Twenty, Astra, GeneratePress…) et souhaitez ajuster quelques styles ou gabarits sans perdre les futures mises à jour
- Vous livrez un projet client sur un thème premium et devez garder la possibilité de le mettre à jour sereinement
- Vous voulez tester des modifications ponctuelles sans risquer de corrompre le thème principal
Je déconseille toujours de partir d’un thème enfant vide sur un thème parent que le client ne mettra jamais à jour. Si les mises à jour ne sont pas prévues, autant repartir sur un thème sur-mesure, plus léger et plus facile à maintenir sur le long terme.
Les limites à connaître
Le thème enfant n’est pas une solution universelle. Il montre ses limites dans plusieurs cas concrets :
| Situation | Thème enfant adapté ? |
|---|---|
| Ajuster quelques couleurs et polices | Oui, parfaitement |
| Surcharger un ou deux gabarits | Oui |
| Refonte complète de la structure HTML | Non, un thème sur-mesure est préférable |
| Thème parent mal codé ou abandonné | Non, l’héritage n’apporte rien |
Un thème enfant hérite aussi des défauts du parent : s’il est lourd, mal optimisé ou truffé de fonctions obsolètes, votre thème enfant traînera les mêmes boulets sans possibilité de s’en défaire facilement.
En résumé
Créer un thème enfant WordPress demande peu de code, mais une compréhension précise du mécanisme de chargement des styles et de la hiérarchie de fichiers. Retenez les deux fonctions clés, get_template_directory_uri() pour le parent et get_stylesheet_uri() pour l’enfant, et vous éviterez la quasi-totalité des erreurs classiques. C’est un outil précieux pour la maintenance à long terme, à condition de l’utiliser pour ce qu’il est : une couche de personnalisation, pas une refonte déguisée.