Les thèmes WordPress sont de plus en plus courus par tous : débutants, blogueurs confirmés ou professionnels du web. Il est possible d’en obtenir gratuitement un peu partout sur la toile, pas toujours de bonne qualité, pas toujours très sécurisés, comme il est possible d’en obtenir de payants (je n’ai pas dit qu’ils étaient mieux). Dans tous les cas il est possible de les personnaliser.
Plusieurs solutions
Wild tweaking
La première, la moins propre, consiste à modifier directement les fichiers du thème, améliorer les portions de code des articles, des commentaires, ou simplement de l’en-tête de votre document ou du fichier functions.php
pour ajouter quelques morceaux de code trouvés sur la toile.
Soit. Mais sachez qu’en faisant cela, il ne vous sera plus possible de mettre à jour votre thème. (en tout cas pas automatiquement)
En effet, à l’instar des plugins, les thèmes sont versionnés et peuvent subir des mises à jour (amélioration de fonctionnalité, mise à jour de sécurité, etc.). S’il vous prenait l’envie de mettre à jour un thème modifié par vos soins, vos modifications seraient alors écrasées.
Cette solution de modification n’est donc possible que si vous êtes sûr de la sécurité du thème et uniquement si vous ne souhaitez pas effectuer de mise à jour. Autant vous dire que ce n’est donc pas la meilleure des solutions.
Child Theme
La seconde solution, de loin ma préférée : créer un thème enfant.
La création d’un thème enfant n’est pas très complexe et permet de bénéficier du thème parent tout en autorisant la modification de certains fichiers à partir du thème enfant.
Sa création se résume en quelques étapes seulement :
- Créer un dossier de thème
- Définir le thème de référence
- Modifier le thème à partir du thème enfant
Voyons cela en détail avec des exemples concrets.
Child theme « Little Twenty »
Nous allons créer un thème enfant à partir du thème Twenty Eleven, nous l’appellerons Little Twenty (ou LT)
Création du dossier de thème
Le dossier du thème enfant se met avec les autres dossiers dans wp-content/themes/
. Créez un dossier nommé little-twenty
.
Dans ce dossier, créez un fichier style.css
avec comme contenu de base :
/*
Theme Name: Little Twenty
Description: Thème enfant de Twenty Eleven
Author: Geoffrey Crofte
Author URI: https://geoffreycrofte.com
Version: 1.0.0
Template: twentyeleven
*/
Ce morceau est relativement clair, la première ligne définit le nom visible de votre thème, la seconde une description, la troisième le nom de l’auteur, la quatrième son URL et la cinquième le numéro de version de votre thème enfant. Toutes ces lignes servent de descriptif qui s’affichera dans l’espace d’administration (Apparence > Thèmes
), vous êtes relativement libres sur le contenu à renseigner.
Le morceau le plus important est le dernier qui est le « slug » du thème de référence, le thème parent. Ce slug correspond au nom du dossier du thème que l’on souhaite modifier, ici Twenty Eleven, qui porte comme nom de dossier « twentyeleven ».
Une fois que vous avez cela, vous avez créé votre Child Theme qui apparait déjà dans la liste des thèmes disponibles depuis votre back-office.
Vous pouvez d’ores et déjà l’activer, celui-ci va simplement adopter le comportement de son thème parent, puisque nous n’avons encore aucun fichier « template » dans notre dossier de thème.
Petit hic cependant, la feuille de styles du thème enfant remplace déjà celle du thème parent. Deux solutions s’offrent ici à vous : copier le contenu de style.css
de TwentyEleven pour le coller dans votre CSS du thème LT, ou créer un import en CSS avec la règle suivante :
@import url("../twentyeleven/style.css");
À placer à la suite des quelques lignes vues précédemment.
Pour des raisons de performance je conseillerais plutôt la première solution (c’est à dire la copie du contenu de la feuille de styles du thème parent), qui vous permettra même de modifier la CSS en cas de besoin.
Modification des templates
Il vous est désormais possible d’éditer les portions du templates parent comme bon vous semble. Comment ? Simplement en copiant le fichier à modifier depuis le thème parent, et en le collant dans votre thème enfant.
Désormais les modifications à apporter se feront sur les fichiers que vous copierez depuis le thème parent.
Prenons un exemple.
Copiez le fichier header.php
du thème parent (TwentyEleven, pour rappel), puis collez-le dans votre thème enfant.
Vous avez maintenant dans votre dossier la feuille de style, et ce fichier header.php
.
Ouvrez le fichier header.php
pour édition et remplacez
<h2 id="site-description"><?php bloginfo( 'description' ); ?></h2>
par
<p id="site-description"><?php bloginfo( 'description' ); ?></p>
Le remplacement de h2
par p
n’aura aucune incidence visuelle, par contre vous constaterez que le code a bel et bien changé.
Modifications des autres fichiers (images, JS, CSS, etc.)
Vous en avez fait l’expérience avec le fichier style.css
: créer un fichier dans votre thème enfant qui porte le même nom qu’un fichier présent dans le thème parent vous permet de remplacer ce dernier.
Par exemple, vous souhaitez modifier le fichier images/search.png
qui représente la loupe présente dans les champs de recherche du thème parent. Créez le dossier images
dans LT, puis placez-y une image search.png
. (prenez une icône sur le web pour effectuer le test, si ça vous dit)
L’autre possibilité aurait été d’écraser le style CSS appliqué à ce type de champ de formulaire, puisque cette image est placée en background-image
.
Chacun des fichiers du thème parent est donc éditable de la sorte.
Ajout de templates, d’images, styles, etc.
L’ajout de template est possible : comme vous le feriez pour un thème parent, créer simplement votre template dans le thème enfant. En respectant la hiérarchie des templates de WordPress, vous pouvez par exemple créer une page spécifique pour l’auteur dont l’identifiant est 2 en créant le fichier author-2.php
à la racine de votre thème.
L’ajout d’image se fait comme vous le feriez pour n’importe quel projet, créez votre image, dans n’importe quel dossier, puis appelez là dans votre thème (via CSS) ou dans votre code HTML.
Attention ! Lorsque vous cherchez à insérer une nouvelle image, le code suivant ne fonctionne plus :
<img src="<?php bloginfo('template_directory'); ?>/img/mon-image.jpg" />
En effet, la valeur « template_directory
» de bloginfo()
retourne le dossier du thème parent : http://domain.tld/wp-content/themes/twentyeleven
À la place, utilisez la fonction : get_stylesheet_directory_uri();
Cette fonction retourne le dossier du thème enfant : http://domain.tld/wp-content/themes/little-twenty
.
L’ajout de feuille de styles ou JavaScript se fait de la même manière que les images : nommez vos fichiers de la même manière que ceux du thème parent pour les écraser, ou chargez-en de nouveaux dans vos templates avec les fonctions wp_register_style()
et wp_register_script()
. Je vous laisse consulter la documentation pour plus de détails.
Les fichiers spéciaux
J’entends par fichiers spéciaux, les fichiers qui n’ont pas tout à fait le même comportement que les précédents.
Le fichier screenshot.png
Ce fichier permet d’afficher un aperçu du thème dans l’administration. C’est un fichier PNG de 300 pixels de large et 225 de hauteur.
Ce fichier n’est pas chargé depuis le thème parent, il vous faudra donc le créer pour votre thème enfant.
Le fichier functions.php
Le fichier functions.php
ne fonctionne pas sur le principe des templates. En effet lorsque vous créez un fichier functions.php
pour votre thème enfant, celui est chargé en premier, puis le même fichier du thème parent est chargé par la suite.
Les deux fichiers functions.php
sont donc chargés l’un après l’autre, thème enfant, puis thème parent.
De cette logique découle une problématique que vous finirez par rencontrer : « Cannot redeclare function_name() (previously declared in […]) ».
En effet, PHP ne permet pas de déclarer deux fois une fonction portant le même nom, ce qui provoque une erreur.
Faisons un essai et analysons-le (attention, faites ça en local, on va créer un conflit) :
- Dans votre child theme LT, créez le fichier
functions.php
- Entrez le code suivant, qui permet de redéfinir le nombre de mots de l’extrait d’article
<?php function twentyeleven_excerpt_length( $length ) { return 50; } add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' ); ?>
- Rechargez la page d’accueil du votre site, une erreur PHP apparait.
Nous venons de définir la fonction twentyeleven_excerpt_length
, soit parce qu’on a accidentellement utilisé le même nom de fonction, soit parce qu’on voulait écraser l’effet de la fonction du thème parent. Sauf que cette fonction est déclarée deux fois par deux fichiers functions.php
différents.
Voici ce qui se passe :
- le fichier
functions.php
de LT (le thème enfant) est lu twentyeleven_excerpt_length
est déclarée pour la première fois- le fichier
functions.php
de TwentyElevent (le thème parent) est lu twentyeleven_excerpt_length
est déclarée pour la seconde fois- PHP ne comprend pas : Paf ! Erreur !
Comment éviter ce problème ?
En utilisant la fonction function_exists()
de PHP. En contrôlant si la fonction existe déjà, on peut déclarer conditionnellement une fonction.
<?php
if ( !function_exists('twentyeleven_excerpt_length')) {
function twentyeleven_excerpt_length( $length ) {
return 50;
}
add_filter( 'excerpt_length', 'twentyeleven_excerpt_length' );
}
?>
« Si la fonction twentyeleven_excerpt_length
n’existe pas, alors on la déclare. »
Ok pour le principe, mais c’est sur le thème parent qu’il faut faire cette manipulation, or on a dit précédemment qu’on s’interdisait à modifier sauvagement le thème parent.
On est bloqué ! Le thème parent est mal construit !
Il ne vous reste plus qu’à prévenir l’auteur du thème qu’il a mal pensé son code.
Cependant, WordPress prévoit quelque chose : chaque fonction créée et liée à un hook est considérée comme une « action » sur ce hook, il est donc possible de retirer ces actions.
Voici un code type qui reprend notre exemple précédent :
<?php
add_action('after_setup_theme','remove_parent_functions');
function remove_parent_functions() {
remove_action('excerpt_length','twentyeleven_excerpt_length');
add_action('excerpt_length','new_twentyeleven_excerpt_length');
}
function new_twentyeleven_excerpt_length($length){
return 75;
}
add_filter('excerpt_length', 'new_twentyeleven_excerpt_length');
Il reste impossible d’utiliser le même nom de fonction, cependant nous avons supprimer l’action de la fonction initiale.
Cela reste un petit bidouillage malgré tout.
Merci à Julien et son article pour cette dernière astuce !
Résumons en quelques points
Pour modifier un thème, vous devez dans l’idéal :
- Créer un thème enfant
- Écraser les templates, images, scripts et CSS en créant des fichiers de mêmes noms que le thème parent dans le dossier du thème enfant
- Ajouter autant de templates, script, CSS ou images que je le souhaite, mais :
- utiliser
bloginfo('stylesheet_directory')
pour appeler mes fichiers - Penser à utiliser
wp_register_style()
etwp_register_scripts()
- utiliser
- Penser aux fichiers spéciaux
- screenshot.png : pour ajouter un aperçu de votre thème au back-office
- functions.php : les deux fichiers (thème parent et thème enfant) sont chargés
Pour ne pas avoir été beaucoup plus loin dans l’exploration des thèmes, je vais m’arrêter là, mais n’hésitez pas à apporter votre expertise ou toute information complémentaire afin de corriger ou compléter cet article.
Merci 🙂
Salut,
Ton tutoriel est clair et rapide à lire. Merci. En revanche pour le path, parfois bloginfo ne fonctionne pas. Pour l’avoir testé : get_stylesheet_directory_uri() fonctionnne tout le temps.
Effectivement maintenant que tu le dis j’ai déjà rencontré ce problème avec
bloginfo()
.Impossible de me souvenir pourquoi cela ne fonctionnait pas, tu as un contexte précis de ton côté ?
Puis de toute manière
bloginfo()
est une sorte d’alias de l’autre, autant utiliser la plus directe.Merci, je complète l’article 🙂
Bonjour, j’ai lu votre article qui est très bien fait et très utile, merci.
Je rencontre un petit « soucis » et j’espère que vous pourrez m’aider. Tout se passe bien, j’ai bien créé mon thème enfant et tout fonctionne à merveille cependant lorsque je modifie un des fichiers css qui se trouve exactement dans le même dossier que celui de mon thème parent (même chemin), la modification de se fait pas du tout sur le site. Merci d’avance pour votre aide
Bonjour,
Tout dépend de la manière dont le thème parent utilise ou charge cette feuille de styles.
Il faut que vous regardiez le code source de votre site ou simplement le fichier style.css du thème parent.
A priori c’est la CSS du thème parent qui est utilisée.
Bon courage.
Superbe
@geoffrey : cela vient de la manière dont est installé ton thème WordPress (ex: dans un sous-dossier et non à la racine). Du coup tous les bloginfo() autres du même genre provoqueront des 404 car renvoyant vers URLs inexistantes.
@Julien : il me semblait que c’était un autre cas que celui-ci, mais impossible de remettre la main dessus.
@Stef : merci 🙂
Tu conseilles d’utiliser function_exists sur toutes les fonctions de functions.php ?
Salut salut.
Désolé, ton commentaire était passé dans les indésirables :/
Dans un contexte où tu ne gères pas personnellement la mise à jour de ton thème et où des modifications risquent d’être nécessaires : oui.
Si c’est dans un cadre que tu maitrises (modifications, mise à jour du thème), ce n’est pas nécessaire.
@geoffrey: le multisite peut-être. De toute manière pour ma part je préfère utiliser ce qui marche quoiqu’il arrive.
Bon tuto, clair et bien expliqué.
J’ai cependant un souci avec le fichier header.php
Les modifications que je fais dans celui qui se trouve dans mon dossier enfant ne sont pas prises en compte. Que je supprime ou modifie un élément, cela ne marche pas. Je n’utilise pas twentyten mais gamepress, est-ce que cela veut dire que ce thème n’est pas paramétré pour accepter d’autres fichiers enfants que functions.php et style.css ?
Merci 🙂
Bonjour et merci 🙂
Normalement la technique du thème enfant fonctionne avec tous les thèmes.
Le seul problème que je connaisse qu’il est possible de rencontrer se trouve sur le fichier functions.php.
Le dossier du thème enfant se trouve bien en dehors du thème en cours de modification ? Il doit se trouver « à côté » du dossier du thème parent.
Salut Geoffrey,
J’ai bien compris l’utilisation d’un thème enfant mais ma question porte plus jusqu’à quel point peut on utiliser un childthème ?
Si je modifie la css,,rajoute du js, le function et quelques templates header,footer,single ou rajoute des templates de pages, est ce que cela ne va pas trop alourdir les perfs de mon site, ou est ce qu’il ne vaudrait pas plutôt pour ce genre de cas, coder son propre thème ?
Merci à toi
Hello Jonathan,
C’est une excellente question, et je me la pose souvent.
Tout dépend de ton besoin en fait. Si tu souhaites continuer à bénéficier des améliorations de ton thème de base (acheté ou téléchargé gratuitement) et coder tes petites améliorations perso, le child theme est fait pour ça.
Si tu as l’intention de juste utiliser le thème de base comme thème de démarrage pour éviter d’avoir besoin de réinventer la roue, tu édites le thème directement pour l’adapter à tes besoins.
Puis si tu as besoin de quelque chose d’hyper léger ou très spécifique, tu composes de A à Z ton thème.
À toi de voir en fait, je n’ai pas d’autres règles que celles-là, et ce n’est que ma manière de voir les choses 🙂
Bonne continuation !
@jonathan & @geoffrey:
En réalité, si il y a bien un poids supplémentaire quoiqu’il arrive avec les child thèmes puisque WordPress doit regarder à deux endroits pour chaque template.
Ça devient lourd aussi si tu utilises le @import pour garder la CSS d’origine en support dans le CSS de l’enfant. La solution pour cela consisterait à charger les deux CSS via le header et d’éviter le @import.
Maintenant les thèmes enfants sont faits pour faciliter la maintenance et les changements mineurs. Ça prend son sens pour les thèmes ultra populaires comme Twenty Twelve ou les framework de type Boilerplate qui sont constamment mis à jour.
Si les changements sont très importants, s’il s’agit d’écraser toutes les fonctions ou presque du parent et que le parent est mis à jour une fois toutes les 2ans, c’est de la pure perte de temps, autant partir directement sur un framework.
Pour le thème de A à Z attention à bien savoir ce que l’on fait, notamment en matière de sécurité, ne pas rajouter des bouts de code PHP récupérer par ci par là.
> the WordPress way sinon rien 😉
@Julien : Ah oui pardon je n’ai pas répondu complètement à la question du poids ou des perfs. Merci d’avoir pris le temps de préciser 🙂
Même au sein d’un thème il y a des bonnes pratiques à avoir pour le nommage des fichiers PHP pour éviter de donner trop de boulot à WordPress dans le parcours des templates.
Il y aurait tout un livre à écrire sur le sujet de l’optimisation et des bonnes pratiques sur WordPress.
Autrement pour le @import oui il vaut mieux éviter, je le précise d’ailleurs dans l’article 🙂
@geoffrey: avec plaisir 🙂 mais oui tu avais précisé dans l’article. C’était juste pour étayer mon propos, à savoir que l’on utilise pas les child thèmes pour gagner en perf.
@Geoffrey & @Julien
Merci à vous deux pour le complément d’info, donc j’en conclue pour ma part qu’il vaut mieux que je parte d’un nouveau thème.
@Julien
Tu as parlé des frameworks, tu as des conseils sur des derniers 😉
Tombe à pis cet article.
Le php n’est pas mon fort cependant, va falloir que je m’y plonge sérieusement un de ces quatre.
Merci pour le tutu je suis débutant mais c’est grâce à vous je m’avance merci mille fois bonne nuit et faites de bon rêve
Salut,
Pour l’écrasement des fonctions du parent, cela n’est pas nécessaire si le thémeur a bien utilisé des function_exists() poru la déclaration de ses fonctions.
J’ajoute que la plupart de nos snippets peuvent être qualifiées de bidouillages.
Bonjour,
Très bon article, j’ai même appris deux trois choses, notamment au niveau de la fonction « after_setup_theme ».
Par contre, j’ai une question :
Il est possible d’initialiser des fonctions dans le fichier « fonction.php » et de les utiliser dans le thème après.
Perso, j’ai une préférence pour orienter mon code sous forme d’objet dans le fichier « fonction.php ». En gros, je créer une classe !
Instancier cet objet dans le fichier « fonction.php » n’est pas un problème et ça fonctionne parfaitement. Par contre, à partir du moment que je stocke l’instance dans une variable, il n’est pas possible de l’appeler dans le rendu visuel du thème.
La seule solution que j’ai trouvé pour le moment, c’est d’appeler les méthodes en static.
Quelqu’un serait-il pourquoi, il n’est pas possible d’utiliser l’instance directement ?
Bien cordialement
Bonjour,
Désolé mais ton commentaire était passé en indésirable.
Pour ton problème je crois qu’il faut simplement passer ta variable en
global
.Ou alors je n’ai pas bien saisi le problème 🙂
Bon week-end.
Bonjour,
Tous les articles que je vois au sujet des thèmes enfants, parlent des fichiers à la racine du thème.
Mais si je veux modifier le fichier / layouts/page.php (pour enlever la date par exemple).
Si j’ai bien compris, je dois créer un dossier /layouts dans mon theme enfant, puis y copier le fichier page.php et le modifier en conséquence.
Cela devrait avoir pour effet d’écraser le page.php du thème parent.
Or ça ne fonctionne pas chez moi, qu’est-ce que j’ai pas compris ?
Bonjour Ben,
C’est bien l’effet attendu, et c’est bien comme cela qu’il faut faire.
Plusieurs réponses :
Ne sachant pas concrètement quel est l’objectif final de ta modification, je ne peux pas t’assurer que tu modifies le bon fichier, ou que tu n’as pas fait une erreur ailleurs.
Bonne continuation 🙂
Bonjour Geoffrey,
J’ai lu la personnalisation du thème avec beaucoup d’intérêt et je t’en remercie. Pourrais tu m’indiquer si l’on peut avoir plusieurs thèmes sur le même site de façon à avoir la présentation du Twentyten sur certaines pages et une présentation faisant appel à un autre thème sur d’autres (tableau de présentation de base de donnée spécifique) ?
Merci d’ores et déjà pour tes indications.
Bonjour,
Navré mais je ne me suis jamais posé la question.
Je ne sais absolument pas si c’est faisable.
Je viens juste de trouver ceci : http://wordpress.org/plugins/theme-switcher/ mais le plugin n’est plus maintenu.
Il faudrait que j’approfondisse les recherches mais j’avoue ne pas avoir beaucoup de temps en ce moment :/
Bon courage !
Bonjour,
Merci pour votre tuto ! Je suis en train de m’entrainer en local mais je rencontre un petit soucis avec mon thème (Virtue) : il existe plusieurs fichiers css dans ce thème (le style.css à la racine du thème et virtue.css qui est situé dans un sous dossier appellé CSS). Quand je modifie un style situé à l’origine de la feuille de style virtue.css, les modifications ne semblent pas marcher (j’ai fait mes modifications dans le style.css du thème enfant dans un premier temps, puis j’ai finalement créé un virtue.css dans le thème enfant mais la non plus ça ne fonctionne pas). Comment cela se passe t-il quand il y a plusieurs fichiers CSS dans un thème ?
Merci pour votre aide !
Bonjour,
Il y a plusieurs problèmes qui peuvent intervenir :
function_exists()
pour vérifier si la fonction est déjà déclarée)Concrètement il faut chercher où et comment sont appelées les autres feuilles de style 🙂
Il est possible que vos modifications sur le thème enfant ne soient simplement pas prise en compte car les CSS ne sont jamais incluse dans votre thème ou écrasée par un autre appel.
Bon courage.
Merci beaucoup c’est parfaitement clair ! Je n’ai plus qu’à plancher la-dessus 😉
Bonne journée !
Salut,
as-tu trouvé la solution ? Si oui, ça m’intéresse !!!
Bonne journée.
Bonsoir,
Je comprends la logique des thèmes enfants et pourtant je ne vois pas bien ce que je perdrais ultérieurement dans le cas inverse.
Dans le cas d’un site d’une 10aine de pages déjà construit pour lequel je veux : rendre une page dynamique avec custom post type (par ex des réalisations) et adjoindre un blog, il me parait plus simple de découper mes pages existantes en y intégrant les fonctions wp nécessaires (header, footer, page1, page2, index.php…) , de dupliquer ds mon thème le fichier functions.php et le dossier inc du dernier thème wp en vue (14), et je me contente de single.php, sidebar.php et searchform.php pour le blog.
Pour résumer, j’ai l’impression qu’il est plus simple de ne prendre que ce dont j’ai besoin que de chercher à enlever tout ce dont je n’ai pas l’utilité 🙂
Qu’est ce que je n’ai pas compris et qu’est ce que je gagnerais avec un child theme ?
Bonsoir,
En effet ça dépend des connaissances que l’on a de WordPress et des besoins sur un thème en particulier.
Lorsque je trouve par miracle un thème qui correspond à peu près à mes besoins, je préfère le dupliquer et faire les modifications dedans en partant du principe que je ne souhaite pas les mises à jour. Mais je fais cela en considérant les tenants et aboutissants.
Mon article traite du cas où il y a besoin d’un simple gabarit en plus, ou de petites choses en moins, tout en préservant la possibilité de bénéficier des mises à jour du thème.
Par exemple, il n’y a pas longtemps c’est arrivé sur les thème ElegantThemes : Nick a mis à jour certains thèmes en y intégrant du responsive. C’est une fonctionnalité intéressante qui ne devrait pas rentrer en conflit avec mes modifications sur mon child theme, mais qui serait catastrophique si j’avais édité mon thème à la va-vite, car mes modifs seraient écrasées, ou j’accepterai de ne pas faire la mise à jour…
Tout dépend du besoin donc. Je ne propose là que la bonne doution pour ne pas bloquer l’évolution des mises à jour d’un thème.
Bonne soirée et merci pour ton intervention.
Ok. Je viens de comprendre les méthodes qui me faisaient défaut et de faire un gros pas en avant en décortiquant quelques thèmes « starter » (inpixelitrust blank theme et underscores). Les 2 regorgent de ressources et je n’ai pas fini leur étude !
Il me fallait juste commencer à mettre les mains sous le moteur de « véhicules » ayant fait leurs preuves plutôt que de toujours vouloir faire du from scratch 🙂
Merci ^^
Mais dans ce cas là (je rebondis sur cette discussion ^^), si on prend juste ce qui nous intéresse et qu’on ne fait pas les mises à jour, n’y a-t-il pas un risque niveau sécurité?
Bonjour !
Avant tout chose, merci pour ce petit tuto ! 🙂
C’est très clair et j’ai pu créer mon thème enfant. Seulement, j’ai été obligé de remettre le thème parent car certaines fonctionnalités avaient disparu du thème enfant : la loupe (fonction de recherche) qui était dans le menu du thème parent, par exemple, ou encore les flèches permettant de naviguer sur les deux sliders de la page d’accueil.
J’utilise le thème Vantage (j’ai par ailleurs commencé mon site ce matin, c’est donc normal que rien ne soit fini et qu’il n’y ait aucun contenu).
Je te remercie par avance pour ton aide, si tu veux bien m’en apporter !
Cordialement,
Maël.
Bonjour,
Ton site web semble fonctionner, j’imagine que tu as trouvé la solution 😉
Bonne continuation.
Bonsoir !
A vrai dire, absolument pas, j’ai simplement remis le thème parent…
Je ne sais pas trop quoi faire, du coup.
Bien cordialement 🙂
Il faut prêter attention au 404 présentes dans votre console pour relever les fichiers manquants et bien utiliser la fonction get_stylesheet_directory_uri(); quand c’est possible pour la déclaration des ressources (images, CSS et JS).
Je ne connais pas ce thème, mais peut-être que le fichier functions.php est mal codé. N’oubliez pas que ce fichier est chargé en plus de votre fichier functions.php.
Voilà, je vous donne des indices, sans connaître le vrai problème.
Bonne soirée.
Bonjour ! 🙂
Avec un léger retard, je vous réponds. En fait, est-il obligé de reproduire le fichier functions.php dans le thème enfant ? Si mon thème enfant ne contient aucun fichier functions.php, que se passe-t-il ? Car je n’en avais créé aucun.
A vrai dire, je ne compte pas modifier ce fichier, et il est très probable, en effet, que ce soit la cause de mon bug. Du coup, sauriez-vous m’indiquer comment faire ? 🙂
Un énorme merci d’avance !
Bonne journée 🙂
Je me suis permis de vous faire une petite vidéo pour que vous voyiez peut-être mieux d’où vient le problème ! 🙂
http://screencast.com/t/ja58zYD49R
Encore merci si vous acceptez de me filer un mini coup de main ><
Bonjour Maël,
C’est bien la première fois qu’on me fait un screencast pour me présenter un problème 🙂 Merci.
Concernant les différentes images qui manquent, je pense que ça vient plus simplement de la manière dont elles sont déclarées dans la ou les CSS.
Par exemple, si je copie l’intégralité de la CSS dans ma feuille de thème enfant, les appels aux images vont se faire depuis le nouvel emplacement, donc si je ne copie pas les images également dans le thème enfant, ça va me donner une erreur 404. D’ailleurs, peux-tu regarder avec Firebug ou ton outil de debug (F12) si dans l’onglet Console tu as des 404 qui apparaissent ?
Bonne soirée.
Bonjour Geoffrey ! 🙂
Un énorme merci pour ton aide, j’ai pu résoudre la plupart de mes problèmes grâce à ça ! J’ai simplement déplacé tous les fichiers images du thème parent vers le thème enfant 🙂
A priori du coup, le souci semble réglé ! Encore merci ! (Au passage, je n’ai pas compris la dernière partie de ta réponse, mais du coup j’ai pas eu besoin de m’en servir, haha !)
Je me permets juste de te poser une question : est-il normal, lorsque j’ouvre l’éditeur pour mon thème enfant, que le fichier style.css soit complètement vide, alors que, si je l’édite depuis le FTP, il comporte bel et bien tous les éléments du thème parent ?
Encore merci pour ton aide !
Maël.
Hello,
Ravis d’avoir pu t’aider.
Hélas non ce bug d’éditeur vide ne me dit rien… à moins qu’il y ai un souci sur les droits de lecture (CHMOD) mais ça m’étonnerait.
Pour la dernière partie de mon message, il s’agissait juste d’une méthode pour vérifier s’il manque des images à l’appel depuis la feuille de style (ça provoque des 404 qui s’affichent dans la console de développement de ton navigateur).
Bonne journée
Hello !
D’accord, merci de ta réponse !
Comment faire pour vérifier les droits d’édition Chmod ? Quel nombre doit s’afficher pour que tout fonctionne correctement ? 🙂
Bonne soirée et bonne nuit ! 🙂
Si cela peut t’aider, voici ce que mon client FTP (filezilla) affiche pour le fichier style.css :
– à la colonne droits d’accès, il affiche « -rw-r–r– »
– à la colonne propriétaire, il affiche « 48 48 »
En espérant que je ne me suis pas trompé quant aux infos à te fournir !
Hello,
Je crois que cette page peut t’aider :
http://codex.wordpress.org/Changing_File_Permissions
Tu peux faire un clic-droit sur le fichier et « Changer les permissions ». Je crois que 755 est suffisant, mais je lis des topics ou 777 est parfois nécessaire.
Bon courage 😉
Hello,
Encore une fois, merci pour ton aide !
Malgré le fait que j’aie chmodé en 777 le fichier style.css de mon thème enfant, ça n’a malheureusement rien changé…
Par conséquent, j’ai posté un message dans le forum de support anglais pour Wp, en espérant qu’on pourra m’aider par là-bas 🙂 Histoire de ne pas non plus trop t’embêter ! 😉
Passe une bonne semaine, et encore merci,
Maël.
Bizarre. Je ne vois pas ce qui pourrait bloquer. Tiens-nous informés si tu obtiens une réponse. Merci 🙂
Eh bien… Peut-être qu’ajouter le contenu de l’autre fichier css manuellement, en passant par Filezilla n’était pas la bonne solution, et que j’aurais du faire un copier/coller avec l’éditeur de thèmes directement ?
A part ça, je ne vois pas ce qui pourrait poser problème, moi non plus… Peut-être un plugin ?
Bonsoir Je trouve votre cours super bien fais mais j’ai opté pour la modification d’un thème (Point) tous va bien jusque-là .
je voulais que tu m’aide à modifier le style d’affichage des articles j’aimerais qu’il s’affiche pas comme dans un blog mais cote à cote sur cette exemple si vous me le permettez bien sure http://www.maliweb.net.
merci
Bonjour et merci pour l’astuce.
Je me posais une question qui est probablement stupide et qui peut-être assimilée comme un peu hors-sujet.
Est-il possible de mettre un thème A sur une partie d’un blog WordPress et un thème sur une autre. Pour faire simple, la /home avec A et toutes les URLs avec un thème B ?
A bientôt,
Bonjour Camille,
Peut-être que ce billet peut t’informer sur une technique acceptable pour ce que tu souhaites faire :
http://josekost.fr/comment-utiliser-2-ou-plusieurs-themes-dans-le-meme-site-wordpress/
Bonne lecture.
Bonjour King Geoffrey,
Voilà qui ressemble parfaite à ce que je recherchais. Merci beaucoup.
Question subsidiaire, qu’as-tu mis dans le Gogol pour qu’il te sorte ceci. J’avais essayé plusieurs combinaisons et n’avais rien eu.
J’ai tapé quelque chose comme « plusieurs thèmes WordPress catégories », car je me souvenais avoir croisé une ressource française qui parlait de thème différent pour chaque catégorie, mais ça date d’il y a deux ans au moins.
Sinon en général je cherche en anglais. :p
Bonjour,
J’avoue ne pas avoir lu l’intégralité des nombreux commentaires, mais j’ai bu littéralement les lignes de cet article tellement il est limpide.
Bravo Geoffrey, l’article est d’une part ultra utile quand on débute su WP (c’est mon cas), très pédagogue et d’une mise en page exemplaire au look plaisant.
Je trouve par ailleurs ton thème excellent, de la même clarté que tes propos, très pédagogue.
Ayant quelques connaissances HTML et CSS, j’ai fait une tentative pour partir de presque rien « from scratch » pour un thème léger et sans plugin (juste une CSS générique pour démarrer), cependant j’ai jeter l’éponge car je n’arrivais pas à faire la mise en page souhaitée et ce malgré des heures non comptées passées sur le sujet.
Je suis donc reparti d’un thème complet (Catch Flames) déjà très bien foutu et ajouté quelques plugin pour le filtrage / masquage du contenu sidebar, mais aussi, en modifiant les fichiers du thème « à la sauvage »…
=> Heureusement ton article va me remettre dans le bon chemin…
Hello BenJ,
Merci pour ton retour d’expérience et pour ce commentaire très motivant pour moi 🙂
C’est vraiment un long travail de partir depuis zéro, il faut accepter de passer par des phases bien divisées de création et conception pour éviter d’oublier des choses.
Pour un projet dont on teste la viabilité, partir d’un thème existant peut être une solution économe en temps.
Bon courage dans ton projet !
lors du chargement de mes pages les styles sont en quelques sortes pas pris en compte jusqu’a ce que le navigateur arrete de charger la page. A un moment donner le site reste avec ce probleme et c’est pas beau a voire.
voici mon site http://www.zoom.novazen.net
Bonjour Arnaud,
Je n’ai pas bien saisi le problème. Mis à part que votre site semble très lent à charger, tout fonctionne normalement, d’après ce que j’ai pu voir.
Peut-être est-ce un problème de connexion internet un peu lente ?
Je vous invite à essayer le plugin WP Rocket qui pourrait vous aider à optimiser le temps de chargement de toutes vos pages sans trop vous casser la tête.
Bonne continuation !
Bonjour Geoffrey.
Merci pour la remarque mais j’ai fini par trouver le problème car c’est n’étais pas un problème de connexion c’est juste que j’utilise un script addthis qui me permet de faire le partage sur les réseaux sociaux et que j’inclus a la fin de ma balise footer. Or ce script est indispensable pour le site et lorsque j’enleves le script le styles de l’entête de ma page et du cote des sidebar ne sont plus casse lors du chargement. et je l’ai placer dans la page ou le lien fait référence au script. Merci
Bonjour Geoffrey
J’ai a nouveau un notre problème j’ai écris un script pour l’accordion et le datapicker mais sa lorsque je soumet le formulaire de contact-form dont je n’ait pas remplir les champs sa charge la page avant de faire la vérification de même avec la vérification de champ de ma newsletter ce qui n’est pas normale. J’utilise les plugins wysija-newsletters et contact-form.
Bonjour Arnaud,
Navré mais je ne vais pas vous proposer un support pour votre installation WordPress pour chaque problème que vous rencontrez. D’autant que là c’est vraiment hors sujet.
Je vous invite à essayer le forum de support des plugins concernés, car de toute manière je ne peux pas rentrer dans la résolution de bug sans connaître parfaitement votre installation ou les plugins que vous mentionnez.
Merci et bon courage pour la suite.
Bonjour Geoffrey, bonjour à tous,
Cela fait plusieurs années que j’utilise des thèmes enfants sans problème. Je me crée aussi des petits sites perso. Mais depuis peu, voulant économiser, j’utilise pour la première fois un second domaine que j’héberge via la base d’un autre domaine (pack perso chez OVH multisite), offre qui n’autorise qu’une seule base mySql (même paramètres ftp). Donc un second dossier dans le FTP, quelques modifs en sus et hop, via ovh, c’est simple et cela fonctionne. J’ai donc un nouveau site avec nouvelle admin WP et les thèmes que je veux. Mais lorsque je souhaite créer un thème enfant dans ce second domaine hébergé, et que je l’active, il n’y a plus de design, juste le texte… J’ai dû rater un épisode, un fichier quelque part. Je me permets donc de demander un avis, car je n’ai pas envie de faire de bêtises qui me coûteraient du temps, ni de modifier le thème original. Merci, peut-être à bientôt 😉
Hello,
Je ne pense pas que le système de multisite de OVH soit en cause. Il s’agit probablement d’un oubli au moment de l’import des styles du thème parent vers le thème enfant.
As-tu une feuille CSS chargée dans ton thème. Y a t-il un import d’une manière ou d’une autre des styles du thème parent ?
Bon courage !
Hello, merci de ta réponse. ! Oui, c’est en effet ce que je pense : il manque sans doute un fichier, voire une ligne de code, quelque chose « de plus » quelque part, même si tout est comme d’hab de ce côté-là (ai bien la feuille de style css). Je creuse et reviens en parler si/quand je trouve.
Re-bonjour Geoffrey,
Je reviens après quelques mois et l’aboutissement d’un blog crée à partir d’un thème fils.
Je souhaitais apporter un complément sur quelques déboires que j’ai eu suite aux dernières mises à jour du thème parent :
– La feuille de style genericons.css du thème parent (CatchFlames) a été changé de répertoire, je l’ai remarqué car je n’avais justement plus les petits icônes qui jalonnait le site => recopier les modifications de répertoires dans le thème enfant
– Des corrections ont été apportés dans fonctions.php que j’avais copié dans mon thème enfant => reporter également ces corrections du thème parent vers enfant
Je sais pas si c’est la bonne pratique mais tout remarche correctement. Voilà en espérant que cela puisse servir à d’autres…
BenJ
Nb : avant de mettre à jour mon thème parent j’aurais su aller voir ce qui le « change log » pour voir les corrections et évolutions.
Hello BenJ,
Merci pour ton retour d’expérience.
Effectivement le changelog est là pour accompagner les changements importants sur un thème et permettre de prévoir les problèmes avant la mise à jour. Ce que tu as fais me semble pertinent et je n’aurais pas fait autrement 🙂
Bonne continuation.
Bonjour Geoffrey,
Bravo pour ce blog vraiment clair (normalement, comme je débute, je… butte sur tout) et joli ce qui ne retire rien…
J’ai créé mon thème enfant mais je me demande quand même,
– si je ne change que la CSS, si ce n’est pas plus pratique de copier mes lignes rajoutées et de les recoller après les mises à jours..??
– dois je forcément suivre la procédure: passer par filezilla ou mon serveur local pour récupérer mon fichier style.css le modifier et l’uploader? ou puis-je surcharger le fichier css directement depuis mon tableau de bord (« éditeur » ou « modifier le css »)?? Si la 2e procédure fonctionne, est ce possible aussi pour des .php?
merci!!
Bonjour Gaëlle,
Il est tout à fait possible grâce au fichier functions.php du thème enfant, de charger la feuille de styles du thème parent, et celle du thème enfant en plus.
Dans le thème enfant, créer un fichier functions.php et ajouter les lignes suivantes :
Il suffira alors de réécrire les lignes de CSS à modifier dans le fichier du thème enfant.
Concernant la procédure FTP, il serait même encore plus sécurisé de passer par SFTP si ton hébergement le permet.
Concernant les éditeurs intégrés dans l’admin de WordPress, je te conseillerais presque de les désactiver : même si ça a un côté pratique, qu’arrive-t-il si ton compte admin se fait hacker ? En plus de pouvoir éditer tes articles et pages, le mec pourra glisser des saloperies dans tes fichiers PHP. Pas très rassurant.
Pour désactiver les éditeurs, tu peux ajouter cette ligne dans wp-config.php (racine de WordPress) :
define( 'DISALLOW_FILE_EDIT', true );
Bonne continuation !
merci! Une mine d’info dans cette réponse!!
J’ai lu qu’avec Jetpack on pouvais surcharger le css de son thème sans craindre les mises à jours… qu’en penses-tu?
je ne veux pas abuser de ton temps mais je me demandais aussi s’il existe de la documentation ou un tuto qui pourrait m’aider à trouver rapidement le nom et surtout la localisation de l’élément que je veux modifier (par exemple je veux supprimer l’affichage des derniers posts sous le slider de la page d’accueil et je ne sais pas trouver l’élément dans home.php. Si ça se trouve une motif CSS suffirait?) Il faut se servir de Firebug ? Peut être que je me sers mal de l’inspecteur?
encore merci…
c’est génial ce système de formation mutuelle, un bel exemple d’ éducation populaire!
Hello,
Jetpack ne va pas offrir mieux qu’un thème enfant, il ne fait que proposer une feuille de styles (ou des styles en vrac dans le code HTML).
Ce n’est donc pas très bénéfique d’installer un plugin aussi lourd pour si peu, à moins que tu trouves d’autres avantages à Jetpack. À toi de peser le pour et le contre 🙂
Pour la localisation d’un élément, tu prends l’outil de sélection d’élément de Firebug (une icône de rectangle avec un curseur dedans) et tu vas choper l’élément que tu veux modifier. Ensuite sur la droite de ta console, tu as du CSS, là tu peux voir le sélecteur CSS qui est utilisé pour appliquer des styles à l’élément. Il suffit de le copier et l’utiliser pour appliquer tes propres styles.
Bon courage.
Bonjour,
Tout d’abord un grand merci pour votre article qui m’a été très utile.
Néanmoins sur une de mes fonctions je ne parviens pas à appliquer la fonction remove à ce bout de code : http://pastebin.com/bH3XGZxj
En effet, quand je fais ça je me prends cette erreur là : “Fatal error: Cannot redeclare blackandwhite_widgets_init() (previously declared in /home/lemarketmc/www/wp-content/themes/blackandwhite-child/functions.php:19) in /home/lemarketmc/www/wp-content/themes/blackandwhite/functions.php on line 132″.
Du coup je ne comprends pas ce que je dois faire étant donné que j’ai déjà remove la fonction en question.
Pourriez-vous y jeter un oeil et me dire ce qui ne va pas ?
C’est une fonction assez important étant donné qu’elle me permet de gérer le balisage h1 à h6.
Merci beaucoup pour votre aide,
Bien à vous,
Camille
Bonjour,
Il suffit de remplacer le nom de la fonction (ligne 10 de votre pastebin) juste sous votre bloc par
new_blackandwhite_widgets_init
, comme vous l’avez défini dans leadd_action
juste au-dessus.Bon courage 🙂
Merci beaucoup pour ce retour si rapide.
J’ai donc intégré la fonction avec la modification mais je me prends l’erreur suivante :
« Parse error: syntax error, unexpected ‘{‘ in /home/lemarketmc/www/wp-content/themes/blackandwhite-child/functions.php on line 18 » ==> ligne 18 : new_blackandwhite_widgets_init() {
j’ai donc essayé de retirer ‘{‘ mais ça n’a pas fonctionné car après j’ai eu l’erreur suivante : « Parse error: syntax error, unexpected ‘register_sidebar’ (T_STRING) in /home/lemarketmc/www/wp-content/themes/blackandwhite-child/functions.php on line 19 » ==> ligne 19 : register_sidebar( array(
Voilà tout mon fichier functions.php (il est très court car c’est pour mon thème enfant) : http://pastebin.com/yVzPTYNT
Je suis désolée d’abuser de vos conseils mais voyez-vous où est l’erreur ?
Je vous remercie beaucoup,
Bien à vous,
Camille
Bonjour,
Il manque le mot « function » devant la déclaration de la fonction ligne 18.
function nom_de_la_fonction() {
WordPress est composé de PHP. Si vous souhaitez aller plus loin dans le développement, je vous conseille de lire un peu sur la syntaxe de PHP (bouquins ou tutoriels en ligne)
Bonne continuation.
En faite , je n’ai pas encore attribuer les ajouts sur la function et que j’ai la page blanche.
Au temps pour moi…
J’ai du faire un copié / collé en supprimant toute la ligne, et c’est vrai qu’à la relecture, n’étant pas une experte je n’ai pas vu.
Merci
Bonjour, j’ai un petit soucis. J’ai une page blanche sur la preview du site.
http://pastebin.com/eT5g8AZZ function child
http://pastebin.com/kkMHZn38 function parent
J’ai mis ces fichiers dans les dossiers respectif mais j’ai ce bug. J’ai copié aussi le dossier du thème parent (core et pro)
D’où le bug a du venir?
Si j’ai bien compris dans un précédent commentaire, toutes les fonctions doit précéder d’un code?
http://pastebin.com/RJfuydTp les fonctions que je dois rajouter au child
Bonjour,
Votre premier fichier (functions.php du thème enfant si j’ai bien compris) fait un
add_action()
. Ce hook possède en deuxième paramètre le nom d’une fonction que je ne vois déclarée nulle part.Il faut la déclarer, cela résoudra probablement le problème de la page blanche (souvent c’est une erreur PHP qui n’est pas visible).
Bon courage.
Le problème voit des require qui n’est pas dans une fonction. C’est çà.
J’ai rajouter une fonction, un nom et des incolades et ça marche. Je ne sais pas si je vois des modifications mais le thème n’a plus la page blanche.
http://pastebin.com/hXWs5jj1
Hello,
Tout nouveau en CMS, mais pas non-plus très bon en code, je bloque déjà au premier stade:
Le template Store est installé et actif, mais j’obtiens ça :
Pourtant, j’ai bien créé un répertoire little-store dans wp-content et dans lequel j’ai placé un fichier style.css comme indiqué.
Ou est donc mon erreur?
Merci et bravo pour tout ce travail!
Alex
Bonjour Alex,
Tout dépend de ce que tu cherches à faire.
Dans ta déclaration tu définis
Store
comme étant le thème parent. As-tu bien un dossier nommé Store dans le dossier de thème ? Est-ce bien un thème qui possède les fichiers indispensables pour un thème ?Bonjour,
tout d’abord bravo pour votre blog et merci également d’aider tous ces internautes débutants dont je fais partie!
J’ai bien lu tout le fil de cet article, et je voudrais me lancer dans la création d’un thème enfant. J’utilise simplement le thème WordPress Twenty Ten sans modification aucune pour l’instant. J’ai bien compris que WordPress préconise maintenant la solution avec un fichier function.php en plus de la feuille style.css.
Le problème est que Twenty Ten contient bien par défaut plusieurs fichiers css, notamment:
editor-style-rtl.css
editor-style.css
rtl.css
Bref, à quoi servent ces feuilles et comment les inclure dans mon thème enfant?
Bonjour,
Merci pour votre retour de lecture 🙂
Ces fichiers sont présents pour la gestion des styles sur des langages RTL (right to left) comme l’arabe ou l’hébreu.
editor-style.css sert à personnaliser les styles dans l’espace d’administration, précisément dans l’éditeur visuel des articles et pages. Ils ne sont pas indispensables et seront chargés depuis le thème parent.
Comme les autres fichiers, vous pouvez les écraser si nécessaire.
Bon courage !
Merci beaucoup pour votre réactivité,
J’avais effectivement pressenti en essayant péniblement de déchiffrer le code que cela pouvait concerner l’éditeur de WordPress. Mais la question que je me pose toujours est
Est-ce que le code du fichier function.php à placer dans le thème enfant proposé par WordPress permet de prendre en charge n’importe quel fichier CSS du thème parent? cela ne semble pas très clair sur le codex WordPress.
Hello,
Je ne sais pas de quel code il s’agit précisément. Mais pour ajouter un fichier CSS à WordPress, il faut souvent préciser son chemin. C’est là qu’il ne faut pas se planter entre
get_stylesheet_directory_uri()
(thème enfant) etget_template_directory_uri()
(thème parent)Bon courage.
Hello,
Merci pour ton article très clair et très intéressant, par contre j’ai une petite question. Si je créer un fichier header.php dans le dossier enfant et que mon template principal est mis à jour, mon thème enfant ne sera pas mis à jour ?
Je pose cette question car je veux modifier qu’une partie des pages, par exemple ajouté une à tel ou tel endroit.
Merci de m’éclaircir
Hello,
C’est bien le but d’un thème enfant : pouvoir mettre à jour le thème parent sans nuire aux modifications apportées par le thème enfant.
Good luck!
Hey merci de ta réponse
Je suis bien d’accord avec ça mais admettons que je copie colle le fichier header.php de mon thème actuel dans mon dossier enfant. Puis une release du thème principale arrive, mon header.php de mon enfant reste inchangé et écrase celui du parent qui lui est à jour non ?
Il ne l’écrase pas directement, il est juste utilisé à la place du header.php du parent. C’est le but en effet.
Du coup si tu veux bénéficier de certaines mises à jour du thème parent, il te faut répercuter le code sur le thème enfant.
Bonjour, voila j’ai un site web et la template bien souvent mise a jour, du coup j’ai fait un thème enfant mais qui fonctionne en partie. Dans la partie enfant j’arrive pas a faire fonctionné dans function.php (dans enfants) l’appel a mes sous dossiers style
/framework/functions/
qui lui comprend 3 fichiers .php dedans
Par contre quand on doit fait fonctionner /framework/
avec un fichier .php
La aucun souc sa fonctionne, mais j’ai besoin pour les traductions de mes fichiers et adaptations de faire appel a des sous dossier comme dans l’origine mais qui ne sont pas interprète a voir sur le site, mais en vidant le cache et en actualisant.
Comment resoudre le souci et avec quelle ligne de code a mettre
J’ai essayé ceci mais sans résultat:
function my_child_theme_setup() {
load_child_theme_textdomain( ‘child-theme’, get_stylesheet_directory() . ‘/framework/functions/momizat_functions.php’ );
Code complet que j’ai mis:
function my_child_theme_setup() {
load_child_theme_textdomain( ‘child-theme’, get_stylesheet_directory() . ‘/framework/functions/momizat_functions.php’ );
}
add_action( ‘after_setup_theme’, ‘my_child_theme_setup’ );
Bonjour,
Le problème du fichier functions.php est qu’il n’est pas écrasé. Les deux fichiers (thème enfant et thème parent) sont exécutés l’un après l’autre et tous les fichiers inclus dans chacun d’eux également.
Il faut donc prendre le temps de réécrire les fonctions, ou faire du remove_action ou remove_filter suivant le cas et le thème.
Concernant la traduction c’est un autre problème également. La déclaration pour le thème enfant doit se faire avec un textdomain bien à lui et non avec le textdomain du parent. C’est un ensemble à part en fait : sa déclaration, son domaine et ses fichiers de traduction.
Bon courage !
Bonjour et merci pour ces superbes explication
bravo très beau site et très utile
encore merci merci
éric
Bonjour,
Tout le plaisir est pour moi 🙂
Bonjour et un grand merci à vous qui faites un travail formidable ! Je débarque totalement sur le web, je ne sais rien faire, je part vraiment de 0, et pour la première fois en lisant votre article, je comprends et j’apprends ! En effet, souvent les tutos sur lesquels je suis tombée survolent un aspect sans vraiment être très pédagogue…
De plus votre site et très agréable et surtout j’applaudis votre soutien et votre réactivité, un sujet écrit en 2012 avec un suivi permanent jusqu’en 2015 (voir 2016 je l’espère), c’est quelque chose je trouve d’exceptionnelle !
Bon peut-être que j’ai l’émerveillement de l’ingénue mais tout de même je tenais à le dire!
Mise à part, je crois avoir à peu près compris l’article mais j’ai quand même quelques questions qui se sont un peu résolues au fil des commentaires. Reste 2 interrogations:
Si j’ai bien compris le thème enfant sert à modifier le thème parent tout en permettant de bénéficier des mises à jour.
Mais comme le soulignais plus haut un internaute lorsqu’il s’agit de .php les mises à jour se font sur le thème parent mais ne se répercutent pas sur le thème enfant.
A cette question vous répondez: « Du coup si tu veux bénéficier de certaines mises à jour du thème parent, il te faut répercuter le code sur le thème enfant. »
Alors, excusez-moi pour mon ignorance mais concrètement ça veux dire quoi ? Et est-ce nécessaire de passer par là lorsque la mise à jour ne touche pas aux fichiers .php copiés dans le thème enfant ? Et enfin est-ce que pour chaque mise à jour en général les créateurs de thème indiquent tous les fichiers qui sont touchés par la mise à jour?
Deuxième point: j’ai cru lire que ce n’était pas normal d’avoir une page blanche sur le fichier .css du thème enfant, est-ce toujours le cas aujourd’hui?
Pour mon cas, j’ai effectivement un style.css à l’origine vide mais qui fonctionne quand je mets des modifications dessus.
Je reconnais ne pas avoir créé mon thème enfant toute seule (n’étant pas tombée sur cet article assez tôt), j’ai téléchargé un thème enfant tout près conçu pour mon thème et aujourd’hui je me demande s’il a été fait correctement. Et si ce n’est pas le cas est-ce possible de rectifier le tire alors que j’ai déjà bien entamé la création de mon site ?
Pour plus d’explication sur mon thème enfant: j’ai bien la première partie que vous décrivez sur mon style.css enfant mais je n’ai pas la règle @import url(« ../twentyeleven/style.css »); (ce qui de toute façon n’a pas l’air d’être la meilleurs solution). Cependant je n’ai absolument pas copié la feuille de style du thème parent, ce qui n’empêche pas à mon site d’en bénéficier ni même de bénéficier des modifications que j’apporte dans le thème enfant. Cependant je pense qu’il serait plus aisé pour moi de pouvoir directement modifier le css prévu dans le thème parent donc je me demandais s’il n’était pas trop tard pour copier la style.css de mon thème parent ?
Je ne pensais pas vous poser tant de questions et m’en excuse, j’espère avoir été claire et que je ne vous prendrais pas trop de temps et encore en grand merci pour votre article vous contribuez à mon avis a beaucoup de site.
Bravo !
Sarah B.
Bonjour Sarah,
Merci pour tes encouragements et ta gratitude, c’est super plaisant à lire 🙂
Concernant tes questions, je vais tenter d’y répondre :
Autre cas : si tu n’as pas besoin de la fonctionnalité ajoutée ou de la modification apportée sur le fichier parent, inutile de la copier sur le fichier enfant.
J’espère avoir pu répondre à tes questions en des termes pas trop complexes.
Bonne continuation à toi.
Merci milles fois !
C’est limpide et précis, vraiment merci.
Je n’ai plus qu’à m’atteler à la tâche !
Très bonne continuation à vous !
Sarah B.
bonjour,
petite question j’ai fait mon site avec un theme premium ou il n’y avait pas de thème enfant et donc je n’ai pas fait de thème enfant comment faire maintenant pour me créer mon thème enfant sans tout casser dans mon site ou devoir tout refaire ?
quelle sont les manipulations à faire ?
merci d’avance
Bonjour,
Tout dépend du thème et de vos modifications.
Les étapes que je vois :
Template: nom-du-dossier-du-theme-originel
Dans l’admin de WordPress, choisissez maintenant le thème correspondant à votre thème enfant.
Dans l’idéal, il faut supprimer maintenant du thème enfant tous les fichiers que vous n’avez pas édité, cela vous permettra de bénéficier des mises à jour du thème parent.
Si votre si est en ligne, je vous invite à faire cela sur une version dupliquée locale et à tout pousser une fois la chose fonctionnelle… juste au cas où 😉
Bon courage.
apres verifications il y avait bien un thème enfant du coup je l’ai préparé et copier coller mon css par contre en mettant le fichier de mise à jour téléchargé donc le thème parent puis installlé le thème enfant sans activer le thème parent mais activé le thème enfant mes pages que j’avais crée et images sont elles perdues?
a priori oui je dois donc tout refaire mes pages c ‘est bien sa ?
merci d’avance très bon site et bon article clair et précis.
salutations
jai juste modifier du css et quelques truc en php.
merci de ta réponse je vais faire sa demain au calme …vu ton édito pour l’installation du thème enfant qui est très simple j’aurais du le faire avant mais je pensais que c’était plus compliqué que sa!
merci à toi je tiens au jus !
rebonjour,
j’ai bien sauvegarder mon fichier
je viens de tester en doublons pour voir si le css se chargeait bien avant de passer au test sur le vrai site, seulement le css du thème parent prend le dessus pourquoi?
la j’ai crée sur une autre BDD et un autre nom de site, j’ai mis le thème parent, crée le thème enfant avec les codes recommandés pour style.css et functions.php et le css du thème parent prend le dessus je ne vois pas pourquoi?
si vous pouviez m’éclairer merci d’avance.
Bonjour!
Aucun moyen je ne trouve pour modifier mon CSS de mon site wordpress sans débourser 40 euros ou plus sans garantie que cela soit simple et clair ensuite !
Y a-t-il un moyen avec le site wordpress.com d’AUJOURD’HUI (19/7/2016) de modifier un thème sans RIEN payer? J’en peux plus de chercher. Les gens disent partout que c’est possible mais ç’en est rien ! Il faut payer j’ai l’impression! Et je ne veux ni ne peux pas! Cela doit rester gratuit selon moi. Et je ne sais pas comment choisir un thème enfant à partir de MON interface, tout à l’air bloqué, ni comment ensuite accéder de manière simple au fichiers CSS ou autres…
Peux-tu m’aider Geoffrey?
Bonjour Thomas,
À ma connaissance WP.com est bridé volontairement. La base est gratuite et si tu en veux davantage il faut payer.
Si tu veux tout gratuit il faudra monter ton serveur, le connecter à internet, héberger ton WordPress.
Tu peux également voir du côté d’autres solutions complètements gratuites comme les github pages si WP ne répond pas à tes attentes.
Très bonne journée.
Salut, merci pour ton tuto, j’aurais aimé pour ma part savoir si tu saurais résoudre mon problème.
Voilà, je développe pour le moment une mise à jour de mon site mais en local, à partir d’un thème téléchargé sur le site themefuse. Afin d’effectuer des modifications je travaille par exemple sur le document fw-style.css qui est situé dans « wp-content > uploads ». Après avoir fait mes modifications j’enregistre, je charge la page et mes modifications sont bien prises en compte. Mais si jamais je clique sur la barre du haut dans wordpress où est écrit « personnaliser » (avec un pinceau), afin de modifier menus, widgets… alors toutes mes modifications sont effacées et tout redevient comme avant.
Si tu avais une réponse à mon problème ça m’aiderait énormément, parce que pour le moment à part ne pas toucher à ce bouton…
Merci beaucoup par avance 🙂
Hello,
D’après ce que tu me dis le fichier CSS que tu édites est utilisé par le framework (fw). Quand tu édites les styles dans l’administration je pense que le Framework écrit une partie des styles dans ce fichier CSS.
En gros tu ne dois pas toucher à ce fichier CSS, si tu veux écrire du CSS il faut le faire dans ton thème enfant directement. Quitte, du coup, à surclasser les styles de fw-style.css.
Bonjour,
Je suis tout nouveau dans wordpress. Je comprends très mal l’usage du thème enfant.
Par exemple je soouhaite créer une boutique en ligne. J’achète un hème wordpress bien fait correspondant à mes ambitions.
Je lui crée un thème enfant.
Est ce sur ce thème enfant que je vais placer mes extensions et est ce sur ce themes enfant que mes clients viendront acheter?
Eclairez moi.
Merci
Bonjour John,
Le thème enfant ne sert que dans le cas où vous avez besoin de faire des modifications dans le code source du thème que vous avez acheté. Ce thème enfant est là pour vous permettre d’écraser des portions de code sans toucher directement au thème parent afin de continuer à bénéficier des mises à jour de celui-ci. (principalement)
Concernant les plugins, ceux-ci sont un tout autre aspect de WordPress, les thèmes sont utilisés normalement pour l’aspect graphique et sont placés dans le dossiers « thèmes ». Les plugins sont utilisés pour ajouter des fonctionnalités à votre site web et sont placés dans le dossier « plugins ». Les deux fonctionnent théoriquement indépendamment et en harmonie, dans le meilleur des mondes possible.
Vos utilisateurs visiteront votre site web en chargeant l’ensemble, de manière transparente, et viendront acheter probablement grâce à un plugin comme WooCommerce ou EDD pour les plus connus. Souvent les thèmes prévoient des styles particuliers pour certains plugins réputés afin de fonctionner vraiment en harmonie avec ces derniers.
J’espère que ces explications vous éclaireront.
Bon dimanche
Bonjour
merci pour le sujet, avez vous dejà rélisé un theme enfant pour le thème free astrid ?
car personnellement tous les css ne sont pas chargés et le site est cassé ( avec ancienne et nouvelle méthode)
J’ai achte un theme Traveler Child theme je l’ai instaler mais a charques fois j’ai essaye de modifie l’option de recherche il me laisse ce pas, comment vous pouvez m’aider s’il vous plait?
Bonjour,
Navré mais je ne connais pas ce child theme, il me faudrait beaucoup plus d’informations sur le sujet pour pouvoir vous accompagner.