Thèmes enfants WordPress : questions pratiques

Thèmes enfants WordPress : questions pratiques
21 février 2016 No Comments WordPress Renaud M.G.

Si vous avez déjà tenté la création d’un thème enfant pour WordPress, vous avez peut-être butté sur un ou deux points. Petite séance de questions/réponses pour peut-être vous aider à débloquer votre situation.

J’ai reçu il y a quelques jours un email d’une personne qui se lançait dans l’aventure de la création de site WordPress et, suite à la lecture de mon article sur la création des thèmes enfants, se posait quelques questions légitimes sur la façon de procéder. Pour cet article, je vous propose de voir ces questions et d’y répondre ensemble.

separateur

J’ai installé le thème XXXX Lite qui est mis à jour une fois par semaine. J’ai retouché les fichiers style.css et footer.php du thèmes. J’avais démarré avec la version 1.8.3.1. et quand j’ai fait la mise à jour en 1.8.3.2, toutes mes modifications ont été écrasées. Maintenant je ne fais plus les mises à jour et le thème en est à sa version 1.8.3.5. J’ai bien pigé le process de créer un child theme. Je suppose que ça doit se faire à partir de mon actuel 1.8.3.2, et non en bousillant mon site en chargeant 1.8.3.5. avant de créer xxx-lite-child. N’est-ce pas ?

Quelle que soient les modifications que le thème enfant apporte à son parent, elles viennent s’appliquer par dessus le thème original et sont donc indépendantes de la version du thème parent, sauf si elles s’appuient sur des fonctionnalités qui ont été introduites dans une version récente du thème. La règle d’or étant de toujours appliquer les mises à jour, je pense que dans ce cas précis il vaut mieux créer le thème enfant par dessus la version la plus récente puisque de toutes façons la version 1.8.3.2 aura disparu dès que possible.

separateur

Le fichier style.css du child commence par : @import url(‘../xxxx-lite/style.css’); Mais les éditeurs changent xxxx-lite/style.css tous les 8 jours et c’est une usine à gaz de plus de 6200 lignes. Même en retrouvant mes modifications, je ne vois pas comment faire pointer les indications de xxxx-lite-child/style.css sur les bonnes valeurs de la feuille de style parent dont les lignes changent sans arrêt.

Il n’est pas possible de faire pointer les indications de la feuille de style du thème enfant sur des lignes de la feuille parent qui, comme il est dit, changent tous les 8 jours. Par contre il faut savoir comment fonctionnent le css et l’héritage des styles dans un thème enfant pour comprendre ce qui va se passer : dans le css les styles sont appliqués les uns à la suite des autres par le navigateur, la dernière instruction lue est celle qui est appliquée. Si par exemple on retrouve

/* ligne 1 */
.toto { font-size: 1.2em; }

/* ligne 25 */
.toto { font-weight: bold; }

/* ligne 50 */
.toto { font-size: 10px; }

Le style qui sera appliqué par le navigateur sera

.toto { font-weight: bold; font-size: 10px; }

Dans ce cas précis, la première ligne du fichier css commence par importer la feuille de style du thème parent avant d’inscrire les instructions personnalisées. Ca n’est pas la meilleure façon de procéder (il vaut mieux utiliser wp_enqueue_style pour ajouter la feuille de style à la suite celle du parent plutôt que d’insérer la feuille de style du parent au début de celle de votre thème enfant) mais il faut comprendre que si vous écrivez dans votre fichier css enfant une instruction qui vient à l’encontre de celle du style de base, elle sera lue après donc écrasera naturellement celle du parent.

separateur

Faudrait-il que je copie-colle dans le dossier xxxx-lite-child l’entier ‘footer.php’ de la version dont j’avais rectifié seulement 2 lignes, sachant que depuis ils ont modifié plusieurs fois le ‘footer.php’ parent, qui devient sans doute différent de celui de ma version obsolète ?

Si vous avez modifié 2 lignes et que les développeurs en ont modifié 2 de leur côté, ça fait 4 lignes de différence aujourd’hui, peut-être 6 demain et 158 dans un an… la façon la plus simple de procéder est une copie pure et simple du fichier footer.php du thème en question, parfois c’est même le seul moyen. Mais s’il l’insertion du footer est prévue dans le fichier functions.php et qu’elle est plus ou moins complexe, c’est peut-être la réécriture de cette insertion qui sera la plus efficace. Seule une étude du code concerné peut répondre à cette question avec certitude.

separateur

En effet, si la création d’un thème enfant permet d’apporter des modifications qui s’appliqueront au thème parent et à ses éventuelles mises à jours, chaque développeur utilise sa propre logique et la mise en place d’une surcouche à ce thème nécessite de comprendre logique cette le mieux possible. Aussi, si la plupart des mises à jour d’un thème seront prises en compte par son enfant, il peut arriver que ses auteurs introduisent un gros changement qui ne sera pas supporté et qu’il faille adapter le thème enfant.

Je laisse là cet article un peu inhabituel pour moi mais je compte sur vous pour l’alimenter avec de nouvelles questions que vous vous ferez un plaisir de poser en commentaires.

A propos de l'auteur

Leave a reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *