Le principe du thème enfant est de permettre la modification et l’ajout de fonctionnalités à un thème parent sans y apporter de quelconque changement. L’avantage majeur est de pouvoir bénéficier des mises à jour du thème parent tout en poursuivant les changements sur le thème enfant. 2 minutes chrono suffisent pour créer un child theme !
Méthode de création du child theme
Avec WordPress, la création d’un child theme est… enfantine !
- Créez un nouveau répertoire dans le dossier /wp-content/themes/NOM_DU_THEME_ENFANT ;
- Créez la feuille de styles CSS en nommant le fichier style.css ;
- Copiez / collez les lignes de code suivantes :
/*
Theme Name: Twenty Ten Child
Description: Thème enfant pour Twenty Ten
Author: Le nom de l'auteur
Template: twentyten
*/
@import url("../twentyten/style.css");
#style1 {
float:left;
}
- Indiquez l’URL de la feuille de styles du thème parent
@import url("../twentyten/style.css");ainsi que le nom du thème parent dansTemplate: twentyten; - Commencez à coder les styles ;
A propos des fichiers de thèmes
Le thème enfant va ainsi hériter de l’ensemble des fonctionnalités du thème parent. De fait, seuls les fichiers qui seront ajoutés dans le dossier du thème enfant surpasseront ceux du thème parent.
Envie de changer le header.php ? Ajoutez ce fichier dans le dossier enfant. Idem pour l’ensemble du template WordPress.
Vous pouvez également vous limiter à l’ajout d’une feuille de styles CSS et multiplier ainsi les changements purement visuels tout en conservant la structure HTML du thème parent. Cette technique est monnaie-courante pour les thèmes premium. Cela permet aux designers d’offrir plusieurs apparences pour un même thème.
Avertissement pour le fichier functions.php
Contrairement aux autres fichiers du thèmes (index.php, single.php, etc.), le functions.php ne sera pas écrasé par celui du thème enfant – si par cas il existe. Il sera au contraire charger juste avant le functions.php du thème parent. Vous pouvez donc ajouter des fonctionnalités au thème parent sans « casser » ce dernier.
Utiliser un child theme est un véritable gain de temps tant pour le développeur que pour le webmaster qui n’auront plus à se soucier des modifications apportées. Un thème source propre en termes de code et un thème enfant pour le customiser à souhaits. Ingénieux, non ?
Crédits photo : larukucafe
Podcast: Télécharger (56.2MB)

super ! merci c’est très clair
C’est vraiment très astucieux.
Merci à vous deux !
Merci beaucoup pour ces explications avec la petite vidéo qui va bien.
Y a plus qu’à, maintenant
vraiment intéressant et pratique. C’est super
Désolé d’apporter un B-mol: si l’on suit vos explications et l’on active le thème enfant, tous les menus personnalisés (faits avec le theme parent d’origine twentyten) disparaissent!!
Ensuite, ce thème enfant, si je vous ai bien compris, ne sert qu’à changer des styles de présentation. Or il me semble bien que dans la présentation US de WP 3.0, il est aussi question et surtout de pouvoir personnaliser des fichiers tels que single.php, page.php, et surtout functions.php – qui se substituent donc aux fichiers de thème parent. Vous n’en faites pas état. Est-ce moi qui ait mal compris?
Enfin vous omettez de dire que sous une configuration WP 3.0 multi-site, vous devez d’abord activer le thème enfant dans la section « super admin ».
Donc « à suivre »….
Le fichier functions.php n’est pas remplacé, par contre celui du thème enfant est chargé en premier.
Si tu regardes twentyten, par ex, tu remarqueras « if !function_exists ». Ça te permet de redéfinir les fonctions qui sont dans le thème parent.
Je vous confirme: un fichier du même nom que celui du thème parent et qui se trouve dans le dossier du thème enfant sera pris en priorité et remplacera celui du thème parent. Donc single.php, page.php, footer.php functions.php, même category-xx.php peuvent être personnalisés à volonté sans compromettre une maj. du thème parent. C’est là que réside je pense – plus que le simple changement de style – la beauté de l’architecture WP 3.0 (en fait ça existe depuis 2.7).
Il reste néanmoins la question des menus?
Les menus sont directement liés au thème et donc aux emplacements utilisés dans ce dernier. Il est donc probable en effet que ces derniers disparaissent lors de l’activation du thème enfant.
En ce qui concerne les fichiers du template – autre la feuille de styles, il me semblait que mon article en parlait suffisamment…
Pour une version multi-site de WordPress, activer le thème est une évidence et ne rentre pas dans le cadre d’un tutoriel sur les child theme mais plutôt sur la gestion d’un site en mode multi-site.
Okay, je n’avais pas lu l’article, simplement vu le podcast, désolé
Pas de soucis !
Ping : L’hebdo WordPress : Thème enfant – Automattic – Extensions | WordPress Francophone
le twenty ten n’est pas le théme idéal à partir duquel établir des thèmes enfants. Le code qu’il contient est un peu pariculier. Par exemple, le code de la Loop d’affichage des articles est dans un fichier (loop.php), et non dans index.php (par exemple). en fait, ce nouveau thème défaut est assez mal documenté. Bonne source d’infos sur les thèmes enfants sur http://themeshaper.com/thematic/
Personnellement, je trouve le nouveau thème par défaut TwentyTen nettement mieux fichu que son prédécesseur K2.
Il exploite à fond les nouvelles fonctionnalités de WordPress 3.0. En cela, je le considère comme une bonne base de travail.
Question documentation, les thèmes WP ont tous la même architecture… le codex est déjà pas mal détaillé à ce sujet, non ?
Bon certes c’est en anglais…
Et merci pour le lien !
Très sympa comme tuto ! A noter que l’ancien thème par défaut n’est pas K2 mais Kubrick !
Merci de ton commentaire ! En effet, c’est bien Kubrick…
Merci je sais enfin ce qu’est un theme enfant.
Je fonce voir les podcasts
très cool ce podcast, super bonnes explications, ça m’a vraiment aidé! @+
Bonjour,
Lorsque l’on utilise bloginfo(« template_url »)sur un thème enfant, WP nous retourne le chemin vers le thème parent.
Il existe un équivalent pour le thème enfant ?
Merci
C’est dans le codex : http://codex.wordpress.org/Function_Reference/bloginfo
Il y a une fonction qui retourne le thème enfant, l’autre le thème parent.
Merci Nicolas.
J’avais été sur cette page, mais j’ai dû lire trop vite
Merci beaucoup pour ce tutoriel. Et pour tous les autres ( je ne voulais pas laisser un commentaire sur chaque article … ). Tout est expliqué de manière claire et didactique. Je débute sur WordPress et c’est un vrai régal de bénéficier de votre expertise.
et bien moi ça marche pas.
ça fait dix fois depuis un bail que j’essaye sans succès.
le thème enfant est complet mais pas reconnu … dans admin il disent incomplet et je vois pas pourquoi il a tout tout tout
Sûrement un problème dans le fichier CSS ou un envoi qui a mal fonctionné.
Ping : 8 hacks pour le thème Twenty Eleven de WordPress | WordPress Channel
Ping : Peaxl, premier fournisseur francophone de thèmes premium pour WordPress | WordPress Channel
Avez-vous des conseils pour un bonne doc du p’tit dernier Twenty-eleven ?
Je cherche précisément un tuto pour insérer les sidebar aux pages et articles, étant donné qu’ils ne le sont pas par défaut.
Merci!
Oui une liste complète de 8 hacks pour Twenty Eleven ont été publiés.
Par contre, merci de ne pas utiliser de pseudo uniquement à des fins de SEO.
Merci Aurélien pour cette information.
.
Sinon, je pensais que les pseudos/lien étaient tolérés ici. Pas de problème je ne ferai plus
Pas de quoi pour l’info !
Les liens oui mais je modère au maximum pour éviter toute dérive. Nous sommes des humains ! :D
Je comprends
Bonjour,
Merci pour votre tutorial. Concernant la rédaction de l’article vous avez fait une faute dans la partie « Méthode de création du child theme » B. style.css sans le « s »
Bonne journée.
Faute corrigée ! Merci !
Bonjour,
votre tutoriel est très clair, le seul hic c’est que je n’arrive pas à créer de nouveau fichier sur Filezilla
Créer nouveau dossier se fait avec un clic droit mais pour un nouveau fichier je n’ai pas trouvé.
Pourriez vous m’aider ?
Merci
De mémoire, vous ne pouvez pas créer de nouveau dossier dans FileZilla directement via le menu contextuel. De fait, il faut d’abord le créer sous Windows puis l’envoyer sur le serveur.
Merci pour la rapidité de la réponse.
Je suis sur mac, je vais essayer de me dépatouiller.
Tant mieux dans ce cas il vaut mieux utiliser Cyberduck ou Transmit (payant).
J’ai suivi votre conseil, j’ai utilisé Cyberduck et ça y est !!!!
j’ai mon thème enfant pour Twenty eleven
Encore un grand merci
Bonjour,
J’ai créer le thème enfant pour le thème twenty eleven, lorsque je vais dans l’éditeur de WordPress je n’ai que ces lignes de code (voir ci après)
du coup je ne sais pas comment faire pour effectuer des transformations. Je voudrais par exemple enlever le formulaire de recherche
Toutes les lignes de code présentes dans mon éditeur wordpress
/*
Theme Name: Nom du thème enfant
Theme URI: URL du site
Description: Une description du thème
Author: Votre nom
Template: twentyeleven
*/
@import url(‘../twentyeleven/style.css’);
Salut,
Merci beaucoup pour le travail que tu fais. Les informations sont claires et précises. Je pense que je ferai appel à toi (dans la mesure du possible) si jamais je rencontre des problèmes. Je débute mais je commence à m’en sortir. Avoir des tutos aussi bien faits, la tâche est vraiment facilitée.
Bonne continuation
Bonjour,
Est-ce que cette technique ne concerne que les feuilles de style, ou bien on peut appliquer la même manip sur les autres fichiers php du thème, comme functions.php ou 404.php …?
Le thème de mon site est anglais à l’origine et je l’ai francisé. Sauf que si j’applique la dernière màj je vais perdre les modifications de functions.php et la traduction des autres pages. Mon idée c’est de dupliquer les fichiers modifiés vers le thème enfant puis d’installer la dernière version du thème.
Bonjour,
je cherche à remplacer leave a comment sur cette page http://yogalyon.fr/articles-yoga/
et j’ai cherché regardé ici et là mais je n’y arrive pas, avez vous un tuto vidéo expliquant cela ?
par avance merci et bravo pour votre boulot !
Daniel
A priori, le problème n’est plus d’actualité ? J’ai sorti ton commentaire du spam… attention à ne pas mettre plusieurs fois le même lien.
Je me réponds :
http://codex.wordpress.org/fr:Thèmes_Enfant
http://codex.wordpress.org/fr:Th%C3%A8mes_Enfant
PS je ne sais pas comment mettre un lien actif dans le commentaire, de plus celui-ci comporte un caractère accentué.
Pas de soucis, pour les liens !
Et effectivement pour te répondre : la plupart des fichiers peuvent être réutilisés dans un thème enfant.
Bonsoir,
En créant un thème fils comme indiqué ci-dessus, perd-on la possibilité d’éditer la feuille de style directement dans l’interface admin de WP 3.2.1 ?
Sans savoir qu’il était possible de faire un thème fils, j’ai fait une feuille de style fille directement dans le thème 2011 en créant un page_seb.php avec get_header(seb); et un header-seb.php qui appelle style_seb.css et cette feuille est éditable dans l’interface d’admin.
Evidémment je ne peux pas faire joujou avec tous les fichiers php et s’il y a des updates de thèmes, il faut que je copie via une recopie plutôt qu’un supprime/copie
Pour info, on parle de thème enfant (child theme).
Pour répondre à ta question, la feuille de styles est toujours accessible depuis l’éditeur de même que l’ensemble des autres thèmes.
Bonjour Aurélien,
Je me pose une petite question, j’ai édité un site sous un thème assez classique de WP (qui correspondait d’un point de vue graphique à la demande de l’entité pour qui j’ai réalisé le site).
Je n’ai pas crée de thème enfant dès le départ et j’ai pas mal modifié le style.css et quelques autres fichiers .php. (et quand je dis pas mal, c’est beaucoup) pour arriver à coller parfaitement à demande qui m’a été faite.
Peut-on créer un thème enfant sans trop de problème alors que l’on à déjà beaucoup modifié le thème parent ?
Merci.
PS: j’aime bien la nelle version du site (un amis a moi a participé à la beta)
Tout d’abord, merci d’apprécier cette nouvelle version !
Pour répondre à ta question, je dirais que cela est possible mais ne présente aucun intérêt dans la mesure où un thème enfant est conçu pour pouvoir autoriser les mises à jour du thème principal sans soucis. Tu peux toutefois en créer un pour réaliser des déclinaisons de ton thème principal (schéma de couleurs par exemple).
Merci de ta réponse Aurélien.
C’est bien ce que je pensais…
(Tu sera au WordCamp cette année ?)
Oui et en tant qu’orateur !
bonjour !
Merci pour ce tuto très utile.
J’ai appliqué la méthode aposteriori sur un thème acheté que j’avais beaucoup customisé. J’ai réinstallé le thème initial après avoir déplaçer tous mes fichiers customisés (fichiers css mais aussi plusieurs fichiers php et js) dans un dossier enfant. Quelques conflits à régler, le menu à réactiver… et le tour est joué !
Seul problème, les modifications faites dans les fichier .js ne sont pas prises en compte dans le fichier enfant et j’ai donc dû les laisser dans le fichier parent.
Est-ce normal selon vous ? (Je ne suis pas du tout développeur).
merci d’avance !
Je n’ai encore jamais testé sur des fichiers JavaScript mais cela doit peut-être pouvoir se faire à condition de l’indiquer quelque part dans l’appel de ces fichiers…
Bonjour Aurélien. Après avoir vu le podcast vidéo et lu les commentaires je suis entièrement convaincu de l’utilité d’un thème enfant pour anticiper les mises à jour, mais j’ai déja pas modifié le style.css et le dark.css du thème initial. J’envisage donc de copier dans style.css (enfant) et dark.css (enfant) les propriétés qui ont été modifiées et recharger les fichiers sources originaux du thème parent. Est-ce la bonne méthode pour ne rien perdre. J’en déduis qu’il faudra que je fasse la même chose pour les fichiers php originaux que je modifierai.
Merci
Je poste à nouveau car je ne peux pas éditer mon précédent message. Avant d’attaquer le style.css, j’ai fait quelques essais avec le dark.css. J’ai reinstallé le fichier d’origine en ayant pris soin de copier les modifications que je voulais pour mon site. J’ai donc créé un dark.css dans mon thème enfant avec juste les propriétés:valeurs que j’ai modifiées pour mon site. Rien à faire. C’est toujours le fichier original qui est pris en compte. J’ai tout fait avec le fichier : j’ai essayé avec et sans un @import url(« ../twentyeleven/colors/dark.css ») dans le fichier enfant, j’ai essayé aussi de recréer l’arborescence initiale ans le theme enfant et toujours rien. Merci de votre aide
S’il y a plusieurs feuilles de styles CSS, il se peut que certaines fonctions posent soucis dans le thème parent.
Merci
).
du coup j’en profites pour te conseiller l’installation de GROWL qui te notifiera si ton upload ftp à marcher ou non (histoire de plus avoir besoin de regarder que la taille à bien changée
On peut aussi utiliser Transmit qui signale la fin du transfert par un changement d’icône dans le dock.
Bonjour,
J’ai bien aimé ton tuto je l’ai réussi et même créer un nouveau design dans le formulaire de connexion. Toutefois j’ai une question sur la création d’un fichier header.php, je m’explique. Mon thème ne possédait pas de logo j’ai copier collé le fichier header.php du dossier parent dans le dossier enfant. Mais on peut dire que qu’il fait doublon et j’ai modifié le fichier header.php enfant.
J’ai remplacé ceci :
<a href="/ » title= »">
Par ceci:
<a href="/ »><img src="/wp-content/themes/jocasta-enfant/images/logo.png » width= »322px » height= »51px » alt= »" />
Enesperant que mon code soit prit en charge dans le formulaire commentaire.
Dois je supprimer du contenu dans mon header.php enfant je tiens à vous signaler que je n’ai rien ajouté en css.
Merci de votre aide.
Utilise bloginfo(« stylesheet_directory ») si tu veux éviter de coder « /wp-content/themes/jocasta-enfant/ » en « dur » dans ton fichier. Comme ça, si ton installation de WordPress change de répertoire, ça ne brisera pas.
Merci pour avoir répondu rapidement.
Mais je ne vois pas comment l’insérer dans ce lien.
<a href="/ »><img src="/wp-content/themes/jocasta-enfant/images/logo.png » width= »322px » height= »51px » alt= »" />
Merci
Bien après mettre creusé la tête le peut qui me reste en connaissance en php est remonté en surface. pour ceux qui cherche voici un bout de code.
<a href="/ »>
A la place des 3? mettre la balise PHP ouvrante et la seconde fermante en espérant que le reste passe bien.
Par contre on ne m’a pas répondu pour le header.php enfant si je peux supprimer ou pas tout ce que je n’ai pas modifier.
Dès que tu modifies un fichier du thème parent, fais-en une copie dans le thème enfant.
Maintenant, si tes modifications sont mineures, tu peux aussi envisager de créer un fichier texte contenant les lignes modifiées avant / après.
Sinon, la technique évoquée par Nicolas fonctionnera aussi. Un exemple avec un lien à reprendre pour ton cas : http://tinyurl.com/75at98x
Bonjour,
C’est bon comme je l’ai dit plus haut j’ai trouvé est l’ai rentré dans mon thème enfant ce qui est plus pratique qu’un fichier texte, car si il y a mise à jour il faut tout refaire. Le thème enfant c’est ce qui permet d’éviter tout ça.
Bruno
Bonjour Aurélien,
Je viens de créer mon thème enfant mais alors qu’il n’y a aucun style de présent dans le fichier style.css enfant, je constate que tout est cassé (un peu comme si il n’y avait plus de feuille de style).
Je précise que j’ai fait le test avec Mamp sur le thème Twentyeleven.
Ci joint le code :
/*
Theme Name: Photograpix
Description: Theme enfant pour Twenty Eleven
Author: Loic
Template: twentyeleven
*/
@import url(« http://localhost:8888/blog/wp-content/themes/themes/twentyeleven/style.css »);
Oups…
J’ai oublié de dire merci !
Désolé du retard, pour réponse : ton lien d’import est sans doute faux il y a 2 fois /themes
Merci Aurélien. Je l’avais pourtant lu et relu… Allez, je cours chez l’opticien !
Hello,
J’ai beaucoup travaillé avec Joomla et là j’essaye WordPress. Je comprends très bien l’intérêt de faire un thème enfant mais je rencontre le même problème avec le thème Twenty Eleven. Sans ajouter de css dans style.css, ma mise en page est cassée… Aurélien Denis, tu as sans doute essayé avec le Twenty Eleven ?
Vérifies le nom du dossier du thème, de même que les métadonnées du child thème dans sylve.css – notamment theme name et template.
Il faut vérifier la validité du lien d’import CSS aussi.
Merci pour ta réponse rapide ! J’ai tout repris depuis le début et cela fonctionne bien. Désolé pour le dérangement. Est ce que cette ligne est importante : Theme URI: URL du site ? Sinon, j’ai une autre question : Dans le menu (le menu avec la barre noire), j’arrivais bien à mettre des liens vers des pages (non catégorisées) mais je n’arrivais pas à mettre des liens vers des catégories. Maintenant que j’ai crée un thème enfant, cela fonctionne bien. Il ya un rapport à ton avis ?
Non la ligne Theme URI est facultative. Pour le menu, c’est géré sous Apparence > Menus. Si tu n’as pas créé d’autres fichiers que styles.css dans ton thème enfant, aucune raison non.
bonjour,
Je suis entrain de faire un test sur wordpress pour comprendre son fonctionnent. J’avais commencé le blog sans thème enfant. J’avais modifié le header que j’ai donc ajouté à mon theme enfant. Tout apparait bien, mais je rencontre la difficulté suivante : quand je tente d’ajouter un nouvel article, j’obtiens une erreur 500 et dans la barre d’adresse l’adresse se finit de la manière suivante: /wp-admin/post-new.php. Pouvez vous m’indiquer
Une erreur 500 informe qu’il y a un soucis côté serveur.Peux-tu nous donner l’intégrale du message ?
Juste une erreur 500 sur le navigateur,
sur l’interface admin je vois ceci :
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 23040 bytes) in /mnt/154/sdc/b/d/cathyboulot/test ad/www/wordpress3/wp-admin/includes/class-wp-comments-list-table.php on line 454
Changes d’hébergeur ou fais évoluer ton offre si tu es sur du mutualisé de base.
C’est d à quoi ? en fait j’utilise un espace gratuit pour faire des tests, une sorte de brouillon
Il faut bannir les hébergeurs gratuits et prendre quelque chose de correct en mutualisé pour débuter.
Pour 60 € an (domaine compris), il y a Mavenhosting qui fait tourner ce site.
Je confirme que cet hebergeur tourne très bien j’y suis depuis 4 ans.
En fait , comment faire pour pouvoir utiliser mon site comme je le pouvais encore hier. Dernières modification : j’ai essayé de faire un theme enfant, comme cela générait des erreurs je l’ai supprimé… mais je n’ai pas retrouvé ma capacité à faire des articles
Je voudrai juste savoir en fait ce qui provoque cette erreur, je ne cherche pas encore un hébergeur…
Justement, les erreurs 500 sont liés à des serveurs qui manquent par exemple de mémoire. Si tu veux faire des tests, le mieux est d’installer WordPress en local.
Oui je comprend, mais comme je travail de chez d’un et d’un autre poste à l’exterieur qui ne m’appartient pas c’était à priori la méthode qui m’est venue naturellement à l’esprit pour transporter le brouillon avec moi ( ah comme c’est dur de débuter) ….mais effectivement un disque dur portable serait certainement plus approprié lol
En tout cas c’est le .htaccess qui posait soucis. A présent tout fonctionne à nouveau // je vais retenter ma chance avec un theme enfant demain/ merci pour l’aide
Il existe des versions portables sur clé USB mais des logiciels comme WAMP / EasyPHP.
merci beaucoup pour l’info
salut aurélien,
merci pour ton tuto.. mais j’ai un problème, j’ai testé des 10zaines de fois en local avec easyphp la création d’un childtheme, tout est ok.. mais quand j’essaie sur mon serveur (ovh) rien n’apparait en admin.
J’ai respecté scrupuleusement le truc.. j’ai vérifie les chmod via filezilla, j’ai même essayé avec un chemin absolue : pour le @import
mais rien de noouveau en admin j’ai beau vider les caches..!.. as-tu déjà rencontré ce problème ? Pourtant j’ai installé un autre theme (Graphene http://wordpress.org/extend/themes/graphene) mais via un zip, tout était ok..
j’ai debaltéré trops vite, j’ai trouvé d’ou venait mon erreur.. il s’agissait du nom du dossier thème parent (sensible à la casse), d’ailleur qlq précisions ici :http://codex.wordpress.org/fr:Th%C3%A8mes_Enfant
Merci de ce retour qui permettra sans doute à d’autres utilisateurs de s’en sortir !