Les développeurs de thèmes peuvent enfin se réjouir. Pour la première fois, il est désormais possible de transmettre des données à des modèles via les différentes fonctions de base de chargement de modèles. Enrico Sorcinelli a annoncé le changement sur le blog Make Core vendredi dernier.

le fonctionnalité a été initialement proposée par Scott Kingsley Clark en 2012. Au fil des ans, le ticket a reçu une dizaine de patchs. Il a survécu à une fermeture et à des arguments sur les raisons pour lesquelles la fonctionnalité ne devrait pas entrer dans le noyau. Sorcinelli était l’un des principaux conducteurs qui a maintenu le ticket en vie ces dernières années.

Les développeurs de WordPress ont nettoyé certaines demandes de fonctionnalités anciennes mais utiles pour le cycle de version 5.5. Il y a quelques semaines, un ticket de 11 ans pour permettre aux utilisateurs de mettre à jour les thèmes et les plugins via un fichier ZIP fait la coupe. Les développeurs principaux ont même fermé un ticket de 9 ans lié à un Piratage d’Internet Explorer 6le progrès. Cependant, pour les auteurs de thèmes, l’un des ajouts les plus importants est le contrôle sur la transmission des données d’un modèle à un autre.

En général, en PHP, les variables peuvent être transmises d’un fichier à l’autre car elles restent dans la même portée. Cependant, ce n’est pas le cas si l’inclusion du fichier est retirée de cette portée en incluant le fichier à l’intérieur d’une fonction. La portée est alors limitée à la fonction. C’est ainsi que fonctionne le système de modèles dans WordPress. Ce n’est pas nécessairement une mauvaise chose. Cependant, cela signifie que les développeurs de thèmes n’ont pas de méthode intégrée pour transmettre des données d’un modèle à l’autre.

Imaginez créer une variable dans un modèle mais avoir besoin d’accéder à cette même variable dans un sous-modèle. Les méthodes pour y parvenir ne manquent pas, mais beaucoup sont inélégantes.

«Pendant des années, les développeurs de thèmes souhaitant transmettre des données à des fichiers modèles ont dû utiliser des solutions de contournement loin d’être idéales», a écrit Sorcinelli dans l’annonce. Les pires solutions impliquaient généralement la création d’une variable globale. D’autres ont créé des fonctions de chargement de modèles personnalisées en plus du système existant de WordPress. Le problème avec toutes les méthodes, quelle que soit l’idéal, était qu’aucune norme n’existait. Chaque thème aurait besoin de créer sa propre solution, et les plugins qui touchent le front-end auraient souvent une solution concurrente.

Toutes les fonctions de chargement de modèles WordPress prennent désormais en charge un paramètre supplémentaire de $args, qui permet aux auteurs de thèmes de transmettre un tableau associatif de données au modèle chargé. Les fonctions qui prennent en charge ce nouveau paramètre sont:

  • get_header()
  • get_footer()
  • get_sidebar()
  • get_template_part()
  • locate_template()
  • load_template()

Tous les hooks associés aux fonctions transmettent également les données.

le get_search_form() a pris en charge un paramètre similaire depuis WordPress 5.2. En pratique, cela devrait fonctionner pratiquement de la même manière, mais la fonction a quelques valeurs par défaut qu’elle définit.

Un avantage supplémentaire d’avoir une méthode standard de transmission de données aux modèles est que la fonctionnalité peut être développée à l’avenir. Par exemple, WordPress pourrait éventuellement offrir un crochet pour filtrer les données, ce qui pourrait être utile avec les thèmes enfants.

Le système de modèles WordPress n’a toujours pas la robustesse des frameworks plus modernes, mais ce simple changement permettra une variété d’applications.

Une question demeure: l’arrivée de cette fonctionnalité est-elle trop tardive? Avec WordPress sur la bonne voie pour réorganiser l’ensemble du système de thèmes pour l’intégrer à la prochaine fonctionnalité d’édition du site complet, cette fonctionnalité ne sera-t-elle utile que pour les prochains mois?

Même si la plupart des développeurs de thèmes ne sautent pas immédiatement dans le train des thèmes basés sur des blocs pendant une autre année, la fonctionnalité pourrait être utile jusqu’à ce qu’ils le fassent. Peut-être que cela aura aussi une certaine utilité au-delà du paradigme thématique actuel.

Les développeurs n’ont toujours pas une idée claire de ce à quoi ressemblera le thème des blocs au cours des prochaines années. Il peut y avoir des situations où la transmission de données dynamiques est encore nécessaire dans le système suivant. Même si ce n’est pas le cas, il faudra probablement beaucoup de temps avant l’adoption massive de thèmes basés sur des blocs par la communauté de développement de thèmes existante. En attendant, beaucoup pourront abandonner des solutions internes et utiliser des fonctions standard.


Source link