# Créer un thème enfant WordPress pas à pas, sans rien casser

> Guide complet pour créer un thème enfant WordPress correctement : style.css, functions.php, enqueue des styles, cas d'usage réels et limites à connaître.

- Auteur : Clément Hadrot
- Publié le : 2020-04-23
- Mis à jour le : 2020-04-23
- Catégorie : Thèmes
- URL : https://wpmoderne.dev.wordpress-developpement.fr/themes/creer-theme-enfant-wordpress/

## L’essentiel

- Un thème enfant protège vos personnalisations des mises à jour
- 4 lignes de style.css et 6 de functions.php suffisent à démarrer
- Un thème enfant n'est pas une solution à tout, il a ses limites

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

> L'essentiel à retenir : Un thème enfant protège vos personnalisations des mises à jour ; 4 lignes de style.css et 6 de functions.php suffisent à démarrer ; Un thème enfant n'est pas une solution à tout, il a ses limites

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 **parent**
- `get_stylesheet_uri()` pointe vers le fichier `style.css` du 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.
