Un thème enfant WordPress hérite du thème parent et permet de le personnaliser sans perdre vos modifications à la mise à jour. Création manuelle (style.css + functions.php), WP-CLI, plugins ou Block Themes FSE avec theme.json : ce guide couvre toutes les méthodes. Vous découvrirez aussi quand vous en passer grâce à Code Snippets ou WPCode, et comment traduire votre thème proprement.
Trop long ? Faites-le résumer par l'IA
Il y a quelques années, un client m’appelle en panique. Il venait de mettre à jour son thème Flavor — et pouf. Couleurs personnalisées, fonctions ajoutées dans functions.php, template de page maison : tout avait disparu. Remplacé par le thème d’origine, propre comme un sou neuf. Il avait modifié le thème parent directement.
C’est exactement pour ça que le thème enfant existe. Et c’est exactement pour ça que je rabâche ce sujet depuis 2015. Sauf qu’en 2026, les choses ont pas mal évolué — d’où ce tutoriel actualisé à jour. Entre les Block Themes, le Full Site Editing, theme.json et WP-CLI, la bonne réponse n’est plus toujours la même.
On va tout voir. De A à Z. Méthode manuelle, méthode plugin, méthode développeur, et surtout : quand est-ce qu’on peut s’en passer complètement. Cet article fusionne et remplace trois guides que j’avais écrits séparément — dont un sur la customisation sans thème enfant et un sur la traduction. Tout est ici maintenant.
Qu’est-ce qu’un thème enfant WordPress ?
Un thème enfant est un thème WordPress qui hérite des fonctionnalités, du design et du code de son thème parent. Il vous permet de personnaliser votre site — CSS, templates PHP, fonctions — sans jamais toucher aux fichiers du parent. Résultat : quand le parent se met à jour, vos modifications restent intactes.
Concrètement, WordPress charge d’abord le thème enfant, puis complète avec les fichiers du parent pour tout ce qui n’a pas été surchargé. Tout fichier placé dans le thème enfant et portant le même nom que dans le parent prendra le dessus (sauf functions.php, qui se cumule).
Petit schéma mental pour bien comprendre : imaginez une maison (le thème parent). Le thème enfant, c’est une couche de peinture et quelques meubles que vous ajoutez. Si le propriétaire rénove la maison (mise à jour), votre peinture et vos meubles restent en place. Sans thème enfant, vous peindriez directement sur les murs du propriétaire — et il repeindrait par-dessus à la prochaine rénovation.
Pour créer un thème enfant minimal, il faut exactement deux choses :
- Un dossier dans
/wp-content/themes/ - Un fichier
style.cssavec un en-têteTemplate:pointant vers le parent
C’est tout. Le reste — functions.php, templates, images — est optionnel et ajouté au besoin. Pour bien comprendre l’arborescence des dossiers WordPress et où placer votre thème enfant, consultez mon guide sur la structure WordPress.
Pourquoi créer un thème enfant (et quand s’en passer)
Les 3 cas où c’est indispensable
- Vous modifiez du PHP : fonctions dans functions.php, templates personnalisés (single.php, header.php, page-custom.php). Sans thème enfant, tout saute à la prochaine mise à jour
- Vous surchargez des templates : vous copiez un fichier du parent (page.php, archive.php) pour le modifier. Le thème enfant est le seul endroit sûr
- Vous ajoutez du CSS lourd : pas 3 lignes de couleur, mais un vrai fichier de surcharge avec des centaines de règles
Les cas où ce n’est PAS nécessaire
- Block Themes (FSE) : si votre thème est un Block Theme (Twenty Twenty-Five, Flavor, Flavor Dark…), les personnalisations passent par theme.json et l’éditeur de site. Pas besoin de thème enfant classique dans la plupart des cas
- CSS léger via le Customizer : 10-20 lignes de CSS dans Apparence → Personnaliser → CSS additionnel ? Ça persiste indépendamment du thème. Pas besoin d’un enfant pour ça
- Snippets PHP indépendants du thème : un bout de code qui doit fonctionner quel que soit le thème actif ? Utilisez Code Snippets ou un mu-plugin. C’est plus propre
Mon conseil : en 2026, si votre thème est un Block Theme, commencez par theme.json. Si vous êtes sur un thème classique (Flavor, OceanWP, GeneratePress…) et que vous touchez au PHP, créez un thème enfant. Point.
Créer un thème enfant manuellement (méthode classique)
C’est la méthode que j’enseigne en formation WordPress depuis 10 ans. Deux fichiers, cinq minutes, zéro plugin. Si vous n’avez pas encore installé WordPress, faites-le d’abord.
Étape 1 — Le fichier style.css (obligatoire)
Créez un dossier pour votre thème enfant dans /wp-content/themes/. Par exemple : /wp-content/themes/flavor-child/. Dedans, créez un fichier style.css avec cet en-tête :
/*
Theme Name: Flavor Child
Description: Thème enfant de Flavor
Author: Votre nom
Template: flavor
Version: 1.0.0
*/
La ligne critique, c’est Template. Elle doit correspondre exactement au nom du dossier du thème parent sur le serveur. Pas le nom affiché dans l’admin — le nom du dossier. Si votre thème parent est dans /themes/flavor/, vous écrivez Template: flavor. Respectez la casse.
Attention : pas d’espace avant les deux-points. Theme Name: fonctionne, Theme Name : ne fonctionne pas. C’est bête, mais ça fait perdre du temps.
Étape 2 — Le fichier functions.php
Créez un fichier functions.php dans le même dossier. Son rôle : charger la feuille de style du parent proprement.
<?php
/**
* Thème enfant — chargement des styles
*/
add_action( 'wp_enqueue_scripts', 'flavor_child_enqueue_styles' );
function flavor_child_enqueue_styles() {
wp_enqueue_style(
'flavor-parent-style',
get_template_directory_uri() . '/style.css'
);
}
Pourquoi wp_enqueue_style() et pas @import dans le CSS ? Parce que @import bloque le rendu et ajoute une requête HTTP. C’est une mauvaise pratique documentée par la documentation officielle WordPress.
Étape 3 — Surcharger un template
Vous voulez modifier le single.php de votre thème parent ? Copiez-le du parent vers votre thème enfant. WordPress chargera automatiquement la version de l’enfant. Même chose pour header.php, footer.php, page.php ou n’importe quel template de la hiérarchie WordPress.
Un piège courant : surcharger TOUS les templates du parent. Ne faites pas ça. Chaque fichier surchargé est un fichier que vous devrez maintenir quand le parent évolue. Surchargez uniquement ce que vous modifiez vraiment.
Consultez la hiérarchie des templates WordPress pour savoir quel fichier surcharger selon votre besoin.
Activer le thème enfant
Uploadez votre dossier via SFTP dans /wp-content/themes/, puis dans l’admin WordPress : Apparence → Thèmes → Activez votre thème enfant. Le thème parent doit rester installé (mais pas activé).
Si vous avez besoin de modifier le fichier wp-config.php ou functions.php de WordPress (pas du thème), c’est un sujet différent. Ne confondez pas le functions.php de WordPress avec celui de votre thème enfant.
Créer un thème enfant avec WP-CLI
Si vous avez un accès SSH à votre hébergement (o2switch, Kinsta, etc.) ou si vous travaillez en local avec wp-env, WP-CLI génère un thème enfant en une commande :
wp scaffold child-theme flavor-child --parent_theme=flavor --theme_name="Flavor Child" --activate
WP-CLI crée le dossier, le style.css avec le bon Template, le functions.php avec wp_enqueue_style(), et active le thème. 5 secondes. Pas d’erreurs de syntaxe, pas de casse oubliée.
C’est ma méthode préférée quand je prépare un environnement de développement. Mais ça demande un accès terminal — pas toujours disponible sur les hébergements mutualisés basiques.
Créer un thème enfant avec un plugin
Vous n’êtes pas à l’aise avec le code et le SFTP ? Des plugins font le travail depuis l’admin WordPress.
Child Theme Configurator (le plus complet)
Child Theme Configurator est le seul plugin sérieux qui reste en 2026. Il analyse votre thème parent, détecte les feuilles de style, génère le thème enfant avec les bonnes dépendances, et vous laisse même modifier le CSS depuis une interface visuelle.
Un conseil : utilisez-le pour créer le thème enfant, puis désactivez-le. Pas besoin de garder un plugin actif pour quelque chose qui ne sert qu’une fois.
Les autres plugins (à éviter)
One Click Child Theme a été retiré du répertoire WordPress.org. Child Themify n’a pas été mis à jour depuis WordPress 4.8 — c’était en 2017. Ces deux plugins sont morts. Ne les installez pas, même si d’anciens tutoriels les recommandent encore.
Thèmes enfants et Block Themes (FSE) — le guide 2026
Depuis WordPress 6.0 et le Full Site Editing, la donne a changé. Les Block Themes fonctionnent différemment des thèmes classiques. Pas de functions.php côté templates, pas de header.php ni footer.php. Tout passe par des templates HTML et un fichier theme.json.
Si vous ne maîtrisez pas encore Gutenberg et l’éditeur de blocs, c’est le bon moment pour s’y mettre — les Block Themes en dépendent entièrement.
theme.json : la nouvelle méthode d’héritage
Avec un Block Theme, le thème enfant n’a souvent besoin que d’un style.css (pour l’en-tête Template) et d’un theme.json qui surcharge les réglages du parent. Les couleurs, la typographie, les espacements — tout se configure en JSON :
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": {
"palette": [
{
"slug": "primary",
"color": "#FF8C00",
"name": "Primaire"
}
]
},
"typography": {
"fontFamilies": [
{
"fontFamily": "Inter Tight, sans-serif",
"slug": "heading",
"name": "Titres"
}
]
}
}
}
Pas de CSS à écrire. Pas de functions.php à bidouiller. WordPress fusionne automatiquement le theme.json du parent avec celui de l’enfant. C’est propre, maintenable, et ça ne casse pas à la mise à jour.
Le plugin Create Block Theme
Create Block Theme est un plugin officiel de l’équipe WordPress (pas un truc tiers). Il permet de créer un thème enfant directement depuis l’éditeur de site : vous personnalisez tout visuellement, puis vous exportez le résultat en ZIP.
Le plugin génère le theme.json, les templates HTML et la structure complète.
Pour les Block Themes, c’est l’équivalent de Child Theme Configurator — mais adapté à l’ère FSE.
Quand un thème enfant classique reste nécessaire avec FSE
Même avec un Block Theme, il y a des cas où un thème enfant avec du PHP s’impose :
- Vous ajoutez des hooks ou filtres personnalisés (functions.php)
- Vous créez des blocs PHP dynamiques
- Vous intégrez du code côté serveur (API externe, calculs, logique métier)
Bref, dès qu’il y a du PHP, le thème enfant classique reprend ses droits.
Personnaliser WordPress sans thème enfant
J’ai longtemps dit " créez toujours un thème enfant ". Bon. En 2026, c’est plus nuancé. Pour certaines personnalisations, un thème enfant est overkill. Voici les alternatives.
Code Snippets et WPCode
Code Snippets et WPCode permettent d’ajouter du PHP, du CSS et du JavaScript directement depuis l’admin WordPress. Pas besoin de SFTP, pas besoin de thème enfant.
L’avantage majeur : vos snippets sont indépendants du thème. Vous changez de thème ? Les snippets restent. C’est LA grosse différence avec le functions.php d’un thème enfant, qui disparaît si vous changez de thème parent.
Code Snippets permet aussi d’activer/désactiver chaque bout de code individuellement et de choisir s’il s’exécute côté front, côté admin, ou partout. Plus flexible qu’un functions.php monolithique.
CSS additionnel (Customizer)
WordPress intègre nativement un champ " CSS additionnel " dans Apparence → Personnaliser. C’est stocké en base de données, pas dans un fichier. Ça persiste indépendamment du thème.
Pour 10-30 lignes de CSS (changer une couleur, masquer un élément, ajuster une police), c’est suffisant. Au-delà, passez à un thème enfant ou à un plugin CSS dédié.
Verdict : thème enfant vs alternatives
| Besoin | Solution recommandée |
|---|---|
| Modifier 5-20 lignes de CSS | CSS additionnel (Customizer) |
| Ajouter du PHP (hooks, filtres, fonctions) | Code Snippets ou WPCode |
| Surcharger un template PHP | Thème enfant (pas le choix) |
| Personnaliser couleurs/typo d’un Block Theme | theme.json dans un thème enfant FSE |
| CSS massif (100+ règles) | Thème enfant + style.css |
| Code indépendant du thème | Code Snippets, WPCode ou mu-plugin |
Traduire un thème WordPress via un thème enfant
Votre thème est en anglais et vous voulez le franciser ? Deux approches. L’une simple, l’autre pour les puristes.
Loco Translate (recommandé en 2026)
Loco Translate est le plugin de traduction de thèmes et d’extensions le plus utilisé. Il fonctionne entièrement depuis l’admin WordPress, sans logiciel externe.
Ce qui nous intéresse ici : Loco Translate peut sauvegarder vos traductions dans le thème enfant plutôt que dans le parent. Lors de la création d’une traduction, choisissez " Custom " comme emplacement et pointez vers le dossier languages de votre thème enfant. Résultat : vos traductions survivent aux mises à jour du parent.
C’est la méthode que je recommande en 2026. Elle remplace le workflow Poedit + FTP qui était la norme en 2017.
Poedit (méthode manuelle pour les puristes)
Si vous préférez ne pas dépendre d’un plugin, Poedit reste une option solide. Le workflow :
- Récupérez le fichier
.potou.podu thème parent (dossier/languages/) - Ouvrez-le dans Poedit, créez une traduction française
- Traduisez les chaînes nécessaires (pas besoin de tout faire)
- Enregistrez : Poedit génère
fr_FR.po+fr_FR.mo - Uploadez ces fichiers dans
/votre-theme-enfant/languages/
Puis dans le functions.php du thème enfant :
add_action( 'after_setup_theme', 'child_theme_traduction' );
function child_theme_traduction() {
load_child_theme_textdomain(
'flavor', // text domain du thème parent
get_stylesheet_directory() . '/languages'
);
}
Le premier paramètre de load_child_theme_textdomain() doit correspondre au text domain du thème parent. Vous le trouvez dans l’en-tête du style.css du parent (Text Domain: flavor) ou dans son functions.php (load_theme_textdomain()).
WP-CLI pour générer les fichiers de traduction
Pour les développeurs : wp i18n make-pot génère automatiquement un fichier .pot depuis les sources PHP et JS de votre thème. Utile si vous créez votre propre thème et voulez préparer les fichiers de traduction :
wp i18n make-pot wp-content/themes/flavor-child/ wp-content/themes/flavor-child/languages/flavor-child.pot
Bonnes pratiques et erreurs courantes
- Ne modifiez JAMAIS le thème parent. Jamais. Même " juste pour tester ". La mise à jour écrasera tout
- Testez les mises à jour du parent en staging. Certaines MAJ modifient la structure des templates. Si vous surchargez un template qui change, votre thème enfant peut casser. Un site de test (avec Local ou wp-env) permet de vérifier avant de pousser en production
- Gardez le functions.php léger. 10 fonctions max. Au-delà, extrayez dans un mu-plugin ou utilisez Code Snippets
- Préférez les hooks aux templates surchargés. Si votre thème parent offre des hooks (
do_action), utilisez-les depuis le functions.php plutôt que de copier un template entier pour modifier 3 lignes - Commentez vos modifications. Un thème enfant sans commentaires, c’est un thème enfant que personne ne comprendra dans 6 mois. Y compris vous
- Ajoutez un screenshot.jpg (1200×900 px) dans le dossier du thème enfant. C’est cosmétique, mais ça aide à l’identifier dans Apparence → Thèmes
- Versionnez votre thème enfant. Git, SVN, ce que vous voulez. Quand vous cassez quelque chose à 2h du matin (et ça arrivera), vous serez content de pouvoir revenir en arrière
- Documentez le thème parent requis. Dans le README du thème enfant, notez la version exacte du parent avec laquelle vous avez testé. Quand quelqu’un d’autre reprend le projet, il saura où il met les pieds
Et si vous déplacez votre site WordPress vers un autre hébergement ou un autre nom de domaine, n’oubliez pas que le thème enfant voyage avec — aucune manipulation particulière n’est nécessaire.
FAQ — Questions fréquentes sur les thèmes enfants WordPress
Qu’est-ce qu’un thème enfant WordPress et à quoi ça sert ?
Un thème enfant est un thème qui hérite du code et du design d’un thème parent. Il permet de personnaliser votre site WordPress (CSS, templates, fonctions PHP) sans modifier les fichiers du parent. L’intérêt principal : vos modifications survivent aux mises à jour du thème parent, qui écrase normalement tous ses fichiers.
Un thème enfant ralentit-il WordPress ?
Non. L’impact est de l’ordre de 1-2 millisecondes — totalement imperceptible. WordPress charge le thème enfant puis complète avec le parent. La seule mauvaise pratique qui pourrait ralentir : utiliser @import dans style.css au lieu de wp_enqueue_style() dans functions.php, ce qui ajoute une requête HTTP bloquante.
Que se passe-t-il si je mets à jour le thème parent ?
Les fichiers du thème parent sont remplacés, mais votre thème enfant reste intact. WordPress continue de charger vos surcharges (templates, CSS, fonctions). Seul risque : si le parent modifie la structure d’un template que vous surchargez, il peut y avoir des incompatibilités. Testez toujours en staging avant de mettre à jour en production.
Puis-je créer un thème enfant pour un Block Theme (FSE) ?
Oui, mais la méthode diffère. Avec un Block Theme, les personnalisations visuelles passent par theme.json plutôt que par du CSS ou du PHP. Vous pouvez créer un thème enfant FSE manuellement (style.css + theme.json) ou utiliser le plugin Create Block Theme pour tout générer depuis l’éditeur de site. Le thème enfant classique avec functions.php reste utile si vous ajoutez des hooks ou du PHP côté serveur.
Thème enfant ou Code Snippets : que choisir ?
Ça dépend. Si votre code PHP doit fonctionner quel que soit le thème actif (analytics, redirections, fonctions utilitaires), utilisez Code Snippets ou un mu-plugin. Si votre code est spécifique au thème (surcharge de template, modification du header, fonctions liées au design), le thème enfant est plus adapté. Les deux ne sont pas mutuellement exclusifs.
Comment traduire mon thème avec un thème enfant ?
La méthode la plus simple en 2026 : installez Loco Translate, créez une traduction " Custom " pointant vers le dossier languages de votre thème enfant. Méthode alternative sans plugin : utilisez Poedit pour créer les fichiers fr_FR.po et fr_FR.mo, uploadez-les dans le thème enfant, et ajoutez load_child_theme_textdomain() dans functions.php.
Faut-il un thème enfant avec Flavor, GeneratePress ou OceanWP ?
Ces thèmes classiques offrent des options de personnalisation poussées sans thème enfant. Mais dès que vous ajoutez du CSS personnalisé, des fonctions PHP ou que vous surchargez un template, créez un thème enfant. Certains (comme Flavor) fournissent un thème enfant prêt à l’emploi dans leur package — vérifiez avant de créer le vôtre.
Comment créer un thème enfant en 1 clic ?
Installez le plugin Child Theme Configurator. Il analyse votre thème parent, génère automatiquement le style.css et le functions.php avec les bonnes dépendances, et active le thème enfant. Une fois créé, désactivez et supprimez le plugin — il n’a plus d’utilité.
Un thème enfant fonctionne-t-il avec WordPress Multisite ?
Oui. Dans un réseau Multisite WordPress, le thème enfant doit être activé par l’administrateur réseau (Mes Sites → Administration du réseau → Thèmes). Ensuite, chaque site du réseau peut l’activer individuellement. Le fonctionnement est identique à une installation classique.
Où placer mes modifications : thème enfant, mu-plugin ou plugin ?
Règle simple. Si votre code est lié au design du thème (CSS, templates, fonctions visuelles) → thème enfant. Si votre code est une fonctionnalité du site qui doit persister quel que soit le thème (formulaire de contact, redirections, optimisations) → mu-plugin ou plugin. Si c’est un snippet temporaire ou de test → Code Snippets.
Ces 7 templates, je les donne en formation payante. Ici, ils sont gratuits.
Sécurité, SEO, performance, contenu, maintenance — les outils que j'utilise en formation et en audit, avec les prompts IA pour aller 10x plus vite.
- 01Workflow contenu anti-IA
- 02Framework SEO Title/Meta/H1
- 03Audit Express 30 points
- 04Blindage sécurité 10 étapes
- 05PageSpeed 90+ sans plugin
- 06Calendrier maintenance IA
- 07Plan d'action 90 jours
1 email / 2 jours pendant 14 jours. Désabonnement en 1 clic.
Résumez ou partagez cet article

