Guide des changements techniques de WordPress 6.3


Ce guide décrit les principaux changements techniques que vous trouverez sur WordPress 6.3, dont la sortie est prévue le 8 août 2023.

WordPress 6.3 : le guide des changements techniques !

Cette version implémente 345 tickets : 126 tickets correspondent à des améliorations et nouvelles fonctionnalités, tandis que 198 tickets sont des corrections de bugs, auxquels s’ajoutent 21 tâches diverses.

Cette version implémente par ailleurs 68 tickets ayant un focus sur les performances et 23 sur l’accessibilité, tandis que 33 tickets sont liés à la modernisation du code du CMS.

Le projet Gutenberg inclut quant à lui 1737 pull requests, dont 307 correspondent à des améliorations, 481 à des correctifs de bugs et 55 à des améliorations d’accessibilité.

Les modifications de WordPress 6.3 se répartissent dans 43 composants Core, et vous trouverez dans ce communiqué les modifications les plus impactantes, composant par composant.

En route pour un petit tour d’horizon des
nouveautés techniques de WordPress 6.3 🚀

Tous les liens de cet article pointent vers des notes de développement rédigées en anglais.

L’objectif est de fournir un panorama général des changements techniques apportés par cette version, en français, puis de diriger les personnes qui souhaitent en savoir plus vers les notes de développement en anglais.

À noter : certaines modifications listées ici vont nécessiter des actions de la part des auteurs et autrices de thèmes et d’extensions, qui devront adapter ou modifier leur code. Si vous êtes concerné·e, veuillez lire les notes de développement listées dans cet article consciencieusement afin de vous assurer que votre code fonctionnera avec WordPress 6.3 lorsque cette version sortira le 8 août 2023.

L’éditeur de blocs

WordPress 6.3 n’implémente pas moins de 10 versions de l’extension Gutenberg : 15.2, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16.0 et 16.1. Vous trouverez de nouvelles API, de nouvelles propriétés de blocs, un mode d’édition de blocs, des classes de couleurs et de nombreuses autres modifications.

À noter : les blocs réutilisables ont été renommés en « compositions synchronisées ».

Pour en savoir plus, consultez les notes de développement suivantes :

Thèmes natifs

Les thèmes natifs ont abandonné le support du navigateur Internet Explorer et n’incluent donc plus aucun script ou feuille de styles destinée à ce navigateur. Les scripts HTML5 Shiv ne sont d’ailleurs plus chargés non plus dans les thèmes Twenty Thirteen, Twenty Fifteen et Twenty Seventeen (ticket #56699).

Les personnes qui souhaitent continuer à supporter IE peuvent cependant utiliser un bout de code pour restaurer ces fonctionnalités.

API de gestion du cache

L’API de gestion du cache a reçu de nombreuses améliorations, notamment l’introduction de nouveaux groupes de cache spécifiques aux requêtes afin d’offrir un meilleur contrôle aux développeur·euses.

Vous pouvez maintenant définir le moment d’expiration du cache d’un groupe, vider le cache de groupes spécifiques, modifier la dernière valeur d’un groupe ou encore déclarer certains groupes d’objets mis en cache comme n’étant pas persistants. Avec ces changements, vous pouvez implémenter votre propre stratégie personnalisée d’invalidation du cache.

API de gestion du système de fichiers

Les fichiers masqués (préfixés par .) peuvent maintenant être inclus dans la fonction list_files() avec un nouveau paramètre optionnel $include_hidden. Sa valeur par défaut est false pour cause de rétrocompatibilité (ticket #53659).

Mode développement

Une nouvelle constante WP_DEVELOPMENT_MODE a été introduite afin de déterminer un contexte de développement spécifique. Les valeurs reconnues pour cette constante sont core, plugin, theme, all, ou une chaîne vide, valeur par défaut indiquant que le site n’est pas dans un contexte de développement.

Deux nouvelles fonctions ont été ajoutées pour interagir avec le mode développement : wp_in_development_mode( $mode ) et wp_get_development_mode().

Les différents contextes de développement affectent des fonctionnalités de mise en cache spécifiques. Par exemple, le cache est surchargé lorsque le site se situe en mode développement de thème, mais pas si l’on est en mode développement core (ticket #57487).

La valeur actuelle de la constante WP_DEVELOPMENT_MODE est aussi accessible sur l’écran Outils > Santé du site > Informations, dans la section listant les constantes WordPress (#58646).

Prise en charge de PHP

La prise en charge de PHP 5 a été abandonnée dans WordPress 6.3.

La nouvelle version minimale prise en charge est PHP 7.0.

La version recommandée de PHP demeure toujours 7.4 ou plus (ticket #57345).

Internationalisation

Plusieurs améliorations, dont la possibilité de court-circuiter le filtre load_textdomain et de réduire le temps de chargement des traductions en temps réel.

Médias

Le composant Médias a reçu plusieurs améliorations destinées à diminuer le temps de chargement des contenus comprenant des images. WordPress ajoute maintenant automatiquement l’attribut fetchpriority avec la valeur high à l’image qui est la plus susceptible d’être considérée comme l’image « LCP » (Largest Contentful Paint).

D’autres améliorations ont été faites sur la gestion automatique du chargement différé des images afin de mieux détecter les moments où l’attribut doit être omis, sur certaines images.

API de gestion des métadonnées

Les performances de la gestion des métadonnées ont été grandement améliorées en développant la capacité de WordPress a charger de façon conditionnelle certaines métadonnées des termes de taxonomies, des commentaires ou encore des sites d’un multisite. Ce chargement conditionnel permet d’éviter de demander la récupération de données alors qu’elles ne sont pas utilisées dans l’écran. Cela réduit les requêtes inutiles en base de données et améliore les performances d’ensemble de votre site.

Gestion des publications

La fonction get_pages() a été refactorisée afin d’utiliser WP_Query. Cette amélioration réduit significativement la complexité de la fonction historique get_pages() en déchargeant la responsabilité des performances et de la gestion du cache sur la classe WP_Query (tickets #55806 et #12821).

Chargement des scripts

La prise en charge des attributs HTML5 async et defer a été ajoutée, ce qui permet aux développeur·euses de définir une stratégie de chargement de leurs scripts. La stratégie de chargement peut être activée en modifiant le paramètre $in_footer pour lui fournir un tableau contenant une stratégie de chargement pour les fonctions wp_register_script() et wp_enqueue_script(). Si elle est présente, la stratégie de chargement sera ajoutée à la balise script associée.

Gestion des mises à jour des extensions et des thèmes

WordPress 6.3 propose une nouvelle fonctionnalité de restauration. Cela permettra à WordPress de restaurer automatiquement la version précédente d’un thème ou d’une extension si la mise à jour automatique associée a fait planter le site.

  • Lorsqu’un thème ou une extension est mise à jour, la version précédente est déplacée dans un répertoire de sauvegarde temporaire :
    • wp-content/upgrade-temp-backup/plugins/[slug] pour les extensions ;
    • wp-content/upgrade-temp-backup/themes/[slug] pour les thèmes.
  • Si la mise à jour échoue, alors la sauvegarde est restaurée dans son emplacement d’origine.
  • Si la mise à jour réussit, la sauvegarde temporaire est supprimée.

Deux nouveaux tests sont également ajoutés à l’écran de Santé du site :

  • Vérification que le répertoire upgrade-temp-backup est accessible en écriture ;
  • Vérification qu’il y a assez d’espace disque disponible pour effectuer les mises à jour sans risque.

Veuillez noter que cette fonctionnalité de restauration ne peut pas être utilisée pour remettre en place la version précédente d’un thème ou d’une extension après une mise à jour réussie. Cela ne fonctionne que si le site a rencontré une erreur fatale et que le site est donc considéré comme étant non fonctionnel.

Gestion des comptes

La classe WP_User_Query était la dernière classe de ce type qui ne permettait pas encore la mise en cache des résultats, c’est maintenant chose faite. Chaque appels à la classe WP_User_Query sera maintenant automatiquement mis en cache par défaut, à moins qu’un paramètre n’indique de ne pas le faire. Il est aussi possible de désactiver la mise en cache globalement en utilisant un filtre.

Les résultats des requêtes sont placés dans le groupe de cache user-queries. La mise en cache est désactivée pour les requêtes utilisant le paramètre field et pour les requêtes comprenant plus de 3 champs.

Autres changements techniques

API CRON

La limite de la mémoire CRON a été agrandie sur la constante WP_MAX_MEMORY_LIMIT (par défaut de 256 Mo). Un nouveau filtre cron_memory_limit a été ajouté pour ajuster cette valeur si nécessaire (ticket #56628).

Éditeur

Un nouvel attribut source a été ajouté sur les compositions de blocs afin de permettre de les filtrer à partir de cette source (ticket #58622).

Contenus embarqués

  • Anghami a été ajouté en tant que fournisseur oEmbed de confiance (ticket #49850) ;
  • La prise en charge des profils de créateur·ice TikTok a été ajoutée (ticket #55784).

Formatage

  • Ajout des attributs ARIA suivants aux attributs autorisés dans les fonctions KSES : aria-controls, aria-expanded, and aria-current (ticket #55370) ;
  • La fonction CSS repeat() a été ajoutée aux éléments autorisés dans les fonctions KSES (ticket #58551).

Divers

  • Dans les fonctions KSES, la fonction safecss_filter_attr() a été revue afin d’autoriser la propriété filter à recevoir une URL en référence à un élément SVG (ticket #57780) ;
  • strpos() a été remplacé par différentes fonctions PHP modernes afin de faire évoluer le code du CMS (tickets #58012, #58206 et #58220) ;
  • Dans la classe WP_Comments_List_Table, lorsque la fonction get_comments() est appelée, le paramètre update_comment_post_cache est passé avec la valeur true, afin d’améliorer les performances (#57802) ;
  • La fonction _wp_array_get() est la fonction la plus appelée sur l’interface publique de tous les sites WordPress, puisqu’elle est appelée environ 23 000 fois sur chaque chargement de page sur un thème basé sur des blocs. WordPress 6.3 ajoute quelques améliorations de performances sur cette fonction (ticket #58376) ;
  • Un nouveau crochet d’action bulk_edit_posts a été ajouté afin de permettre de déclencher une action après que les données d’une édition par lot aient été traitées et avant de renvoyer les résultats. Cela permet notamment aux développeurs et développeuses d’ajouter d’autres modifications sans avoir besoin de greffer des appels AJAX supplémentaires (ticket #28112).

API REST

  • L’API REST Themes permet maintenant de savoir si un thème prend en charge l’éditeur de site, grâce à la propriété is_block_theme située dans la réponse API du point de terminaison wp/v2/themes (ticket #58123) ;
  • Un point de terminaison a été ajouté afin d’obtenir les révisions des styles globaux, accessible sur /wp/v2/global-styles/revisions (ticket #58524) ;
  • WP_REST_Templates_Controller a été modifié afin d’inclure un champ modified pour connaître la date de modification des modèles et des éléments de modèles (ticket #58540).

Thèmes

La nouvelle fonction publique wp_get_remote_theme_patterns() a été ajoutée afin d’effectuer des requêtes sur les patterns provenant du theme.json et se substitue aux précédents usages d’API privées (#58460).

Nouveaux crochets d’actions

Nouveaux filtres

  • plugins_list (#57278)
  • pre_load_textdomain (#58035)
  • wp_get_attachment_image_context (#58212)
  • get_pages_query_args (#12821)
  • cron_memory_limit (56628)
  • nav_menu_item_attributes (#57140)
  • nav_menu_link_attributes (#57140)
  • nav_menu_submenu_attributes (#57140)
  • pre_wp_setup_nav_menu_item (#56577)
  • site_editor_no_javascript_message (#56228)
  • image_edit_thumbnails_separately (#57685)
  • wp_navigation_should_create_fallback (#58750)
  • wp_min_priority_img_pixels (#58235)

Crochets d’actions et filtres modifiés

  • rest_allowed_cors_headers (#57752) et rest_exposed_cors_headers (#57752)
  • edit_custom_thumbnail_sizes a été déprécié et remplacé par image_edit_thumbnails_separately (#57685)

Fichiers dépréciés

  • Le fichier wp-admin/media.php a été déprécié. Les personnes visitant cette page seront redirigées sur la médiathèque, avec une notification (ticket #57612).

Mise à jour de bibliothèques externes

Les bibliothèques externes suivantes ont été mises à jour :

  • PHPMailer vers la version 6.8.0 (#57873)
  • Requests library vers la version 2.0.6 (#58079)
  • jQuery vers la version 3.7.0 (#58083)
  • Sodium Compat vers la version 1.20.0 (#58224)
  • jQuery Migrate vers la version 3.4.1 (#58451)
  • npm vers la dernière version disponible (#58623)

Que vous développiez des thèmes ou des extensions, pensez à tester et retester votre code pour vous assurer de sa compatibilité avec ces changements. Vous pouvez utiliser l’extension Beta Tester sur un site de test pour vérifier la compatibilité de vos développements avec WordPress 6.3 Release Candidate 1. Nous comptons sur vous pour vérifier que votre code fonctionne correctement avec le cœur du CMS, pour le bien des millions d’utilisateurs et utilisatrices de WordPress ♥️

Laisser un commentaire