Le WordPress d'aujourd'hui, décodé pour les développeurs

Thèmes

Un thème parent mis à jour casse trois thèmes enfants : notre checklist

Une mise à jour du thème parent, appliquée sur trois sites différents basés sur des thèmes enfants distincts, casse chacun d'eux d'une façon différente. Une checklist pour anticiper ce risque.

Par WordPress Développement • 14 avril 2024 • 5 min de lecture • Aucun commentaire
Un thème parent mis à jour casse trois thèmes enfants : notre checklist

Trois sites, chacun construit sur un thème enfant différent, mais tous rattachés au même thème parent. Une mise à jour de ce thème parent, appliquée en parallèle sur les trois environnements, produit trois régressions distinctes : un espacement cassé sur le premier, un gabarit de page introuvable sur le second, une fonction PHP en doublon sur le troisième. Une seule mise à jour en cause, trois symptômes différents, révélateurs de la nature même de l’héritage entre thème parent et thèmes enfants.

Cette situation illustre un risque propre à la gestion d’un parc de sites construits sur une base commune : un thème enfant hérite silencieusement de tout changement apporté au thème parent, y compris ceux qui n’étaient jamais prévus par les gabarits ou les fonctions personnalisées de l’enfant.

Pourquoi une mise à jour du parent affecte différemment chaque enfant

Un thème enfant ne surcharge généralement qu’une partie des fichiers du thème parent : quelques gabarits, une feuille de style additionnelle, parfois quelques fonctions ajoutées dans son propre functions.php. Tout le reste continue de provenir directement du parent. Une modification de structure dans un gabarit non surchargé par un enfant donné se répercute donc immédiatement sur cet enfant, tandis qu’un autre enfant, qui a justement surchargé ce même gabarit avec sa propre version, en reste protégé, au prix d’un gabarit potentiellement devenu incohérent avec le reste du thème parent mis à jour.

Le cas du gabarit surchargé devenu obsolète

Un thème enfant qui copie un gabarit du parent pour le personnaliser fige, au moment de cette copie, la structure HTML et les appels de fonctions tels qu’ils existaient à cette date. Si le thème parent évolue ensuite en ajoutant un nouvel appel de fonction dans ce même gabarit — par exemple un nouveau hook d’action destiné à une fonctionnalité d’accessibilité — le gabarit surchargé dans l’enfant ne bénéficie jamais de cet ajout, puisque WordPress utilise la version de l’enfant en priorité et ignore totalement celle du parent pour ce fichier précis.

L'essentiel à retenir : Un thème enfant hérite silencieusement de tout changement dans le thème parent ; Un gabarit surchargé dans l'enfant devient obsolète si le parent en change la structure ; Tester la mise à jour sur une copie avant de la déployer sur les sites en production

Le cas de la fonction PHP redéclarée en double

Un thème enfant qui déclare, dans son propre functions.php, une fonction du même nom qu’une fonction nouvellement ajoutée dans le parent provoque une erreur fatale Cannot redeclare function, dès lors que les deux fichiers sont chargés dans la même requête. Ce risque, invisible avant la mise à jour du parent, ne se révèle qu’au moment précis où celui-ci introduit une fonction dont le nom entre en collision avec du code déjà présent côté enfant.

La checklist à appliquer avant toute mise à jour d’un thème parent partagé

  1. Lister tous les gabarits surchargés par chaque thème enfant concerné par la mise à jour.
  2. Comparer, fichier par fichier, la version du gabarit surchargé avec sa nouvelle version dans le thème parent mis à jour.
  3. Rechercher, dans le journal des modifications du thème parent, toute nouvelle fonction ou constante déclarée globalement.
  4. Vérifier l’absence de collision de nom entre ces ajouts et le code propre à chaque thème enfant.
  5. Appliquer la mise à jour sur une copie de chaque site, jamais directement en production.
  6. Vérifier visuellement les pages qui dépendent des gabarits identifiés à l’étape 1, pas seulement la page d’accueil.
  7. Documenter, pour chaque thème enfant, la version du parent avec laquelle il a été testé et validé.

Un thème parent partagé par plusieurs projets n’est jamais neutre à mettre à jour : chaque enfant surcharge une partie différente, et c’est précisément cette partie non surchargée qui absorbe le changement sans prévenir personne.

Limiter le risque en amont, pas seulement au moment de la mise à jour

Un moyen de réduire ce risque à la source consiste à limiter le nombre de gabarits surchargés par chaque thème enfant au strict minimum nécessaire, en préférant des hooks d’action et de filtre exposés par le thème parent plutôt qu’une copie complète d’un fichier. Un thème parent bien conçu documente précisément les points d’extension prévus pour ses enfants, ce qui réduit d’autant le nombre de fichiers dupliqués susceptibles de devenir incohérents après une mise à jour.

En résumé

La relation entre un thème parent et plusieurs thèmes enfants ne garantit jamais une mise à jour sans risque, précisément parce que chaque enfant hérite différemment selon les fichiers qu’il a choisi de surcharger. Une checklist appliquée systématiquement avant chaque mise à jour du parent, incluant un test sur copie et une comparaison fichier par fichier, reste la méthode la plus fiable pour repérer une régression avant qu’elle n’atteigne un site en production.

Laisser un commentaire

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

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi