Aller au contenu
Genevois Informatique
Sites internet

Thème enfant WordPress : mettre à jour sans perdre ses retouches

WordPress cherche d'abord le gabarit dans l'enfant, puis retombe sur le parent. Vos ajustements vivent donc à part, et le thème acheté redevient une pièce que l'on peut mettre à jour.

Par ·

Dossier de thème parent et dossier de thème enfant sur WordPress

Le scénario se rejoue régulièrement sur les sites que nous reprenons. Un thème du commerce a été acheté, puis ajusté au fil des années : une ligne de code pour afficher le numéro de téléphone dans l'en-tête, une modification du pied de page, un bout de style pour la couleur des boutons. Tout fonctionne, jusqu'au jour où l'éditeur publie une mise à jour. À partir de là, deux issues seulement se présentent. Soit la mise à jour est appliquée et l'ensemble des ajustements disparaît, parce qu'ils vivaient dans des fichiers qui viennent d'être remplacés. Soit personne n'ose l'appliquer, et le thème reste figé sans jamais recevoir de correctif.

Le thème enfant résout ce dilemme. Ce n'est ni une technologie récente, ni une option coûteuse : c'est un mécanisme prévu par WordPress lui-même, que nous posons dès la création d'un site WordPress à partir de 900 HT. Il reste pourtant absent d'une bonne partie des sites que l'on nous confie.

Ce que WordPress fait exactement quand un thème enfant est actif

Un thème enfant est un thème à part entière, mais volontairement incomplet. Il contient au minimum une feuille de style style.css qui déclare, dans son en-tête, le nom du thème parent dont il dépend. Il peut également contenir un fichier functions.php et des gabarits de page.

Le fonctionnement repose sur une règle de priorité. Lorsqu'un visiteur demande une page, WordPress cherche d'abord le gabarit correspondant dans le thème enfant. S'il l'y trouve, il l'utilise ; s'il ne l'y trouve pas, il retombe sur le fichier du thème parent. Le fichier functions.php obéit à une logique différente : il ne remplace pas celui du parent, il est chargé en plus, ce qui permet d'ajouter du comportement sans réécrire l'existant.

La conséquence pratique est celle qui vous intéresse. Le thème parent reste un dossier que vous n'avez jamais touché, et il peut donc être mis à jour aussi souvent que son éditeur publie. Vos modifications, elles, résident dans un dossier séparé auquel la mise à jour ne touche pas. Vous cessez d'avoir à choisir entre la sécurité et vos personnalisations.

Une nuance mérite d'être signalée aux lecteurs techniques : sur les thèmes récents construits autour de l'éditeur de site, une partie des personnalisations est enregistrée en base de données plutôt que dans des fichiers, et le thème enfant devient moins central. Il reste néanmoins utile dès qu'une ligne de PHP ou une règle de style spécifique entre en jeu, ce qui est le cas sur la quasi-totalité des sites professionnels que nous livrons.

Ce que le thème enfant protège, et ce qu'il ne protège pas

La confusion la plus fréquente concerne le périmètre couvert. Le thème enfant protège ce qui relève du code de présentation : les gabarits de page, les fonctions ajoutées, les règles de style, l'ajout d'un champ dans l'en-tête, la modification d'un pied de page, l'enregistrement d'une police ou d'un emplacement de menu.

Il ne protège pas le contenu, qui est stocké en base de données et n'a jamais été menacé par une mise à jour de thème. Il ne protège pas davantage les mises en page réalisées avec un constructeur comme celui que nous décrivons dans Elementor sur nos vitrines, puisque ces mises en page vivent elles aussi en base. Il ne protège enfin ni les réglages des extensions, ni les images de votre médiathèque.

Autrement dit, le thème enfant ne dispense en rien d'une sauvegarde ni d'un test avant mise à jour. Il supprime une catégorie de perte, celle des retouches de code écrasées, et c'est déjà considérable.

Thème parent, thème enfant et cycle de mise à jour
Thème parent, thème enfant et cycle de mise à jour

Les trois situations où nous en posons un sans discuter

La première est la création d'un site sur un thème commercial ou sur un thème du répertoire officiel. Nous savons qu'un ajustement finira par être nécessaire, ne serait-ce que pour un détail de mise en forme, et créer l'enfant au départ coûte quelques minutes alors que le rattraper plus tard demande de retrouver ce qui a été modifié dans le parent.

La deuxième est la reprise d'un site existant dont le thème a été modifié en direct. Nous commençons alors par comparer les fichiers du thème installé avec la version d'origine de l'éditeur, ce qui révèle la liste exacte des modifications apportées au fil des ans. Nous déplaçons ces modifications dans un thème enfant, puis nous remettons le parent dans son état d'origine et nous le mettons à jour.

La troisième est le passage d'un site sous contrat de maintenance WordPress. Un site dont le thème ne peut pas être mis à jour n'est pas maintenable, et le contrat perdrait une partie de son sens. Nous traitons donc ce point avant de démarrer le suivi, parce qu'il conditionne toutes les mises à jour ultérieures.

Le thème sans licence identifiable est un sujet distinct, et plus grave

Le thème enfant règle une question technique. Il ne règle pas celle de l'origine du thème parent, que nous rencontrons régulièrement lors des reprises.

Un thème commercial redistribué gratuitement en dehors de la boutique de son éditeur, ce que l'on appelle un thème nulled, présente deux problèmes cumulés. D'une part, il ne reçoit aucune mise à jour, puisque les mises à jour passent par une clé de licence que vous n'avez pas. D'autre part, il a été modifié avant redistribution, et cette modification n'est pas documentée. Nous ne construisons pas de site sur un tel socle et nous ne prenons pas ce type d'installation en maintenance sans l'avoir d'abord remplacée.

Le sujet rejoint celui de la propriété de votre installation, que nous traitons dans à qui appartient votre site une fois livré. Les licences du thème et des extensions payantes doivent être souscrites à votre nom, dans un compte dont vous détenez les identifiants. Une licence enregistrée au nom d'un prestataire vous laisse dépendant de lui pour la moindre mise à jour, y compris le jour où vous décidez de changer d'interlocuteur.

Notre façon de basculer un site existant vers un thème enfant

Nous travaillons sur une copie de préproduction, jamais sur le site en ligne, selon la méthode décrite dans tester une mise à jour avant la production. Nous récupérons la version officielle du thème parent, nous la comparons fichier par fichier avec celle installée, et nous établissons la liste des écarts. Nous créons ensuite le thème enfant, nous y transférons les gabarits modifiés et les fonctions ajoutées, puis nous l'activons sur la copie.

Nous vérifions alors les pages une à une, parce qu'une modification oubliée se voit à l'affichage plus sûrement que dans un fichier. Une fois la copie conforme, nous restaurons le parent d'origine, nous appliquons sa mise à jour, et nous reproduisons l'opération en ligne après avoir pris une sauvegarde. L'intervention se conduit à distance, en France comme en Suisse.

Il faut préciser une chose pour éviter un malentendu : un thème enfant n'est pas du développement sur mesure. C'est une mesure d'hygiène qui représente une fraction de journée sur un site standard. Le développement sur mesure commence quand le métier ne rentre plus dans un thème du commerce, une frontière que nous situons dans WordPress ou développement sur mesure.

Si vous ignorez si votre site dispose d'un thème enfant, la question se règle en une minute dans l'administration, à la rubrique des thèmes. Si vous y voyez un thème dont personne ne connaît la provenance, ou si vos mises à jour de thème sont bloquées depuis longtemps, montrez-nous l'installation. Nous vous dirons si le socle se récupère proprement ou s'il vaut mieux repartir sur une base licenciée à votre nom.

Commençons ensemble

Un projet, une panne, un rendez-vous.

Choisissez un créneau, ou décrivez votre besoin : nous répondons avec un périmètre clair, un prix hors taxes en euros ou en francs, et un interlocuteur nommé.