Guide des changements techniques de WordPress 6.1

La version Release Candidate de WordPress 6.1 est sortie mardi 11 octobre. Il est donc temps de parcourir les différents changements techniques qu’apportera cette prochaine version majeure de notre CMS.

La sortie finale de cette nouvelle version est planifiée pour le 1er novembre 2022.

WordPress 6.1 : Guide des changements techniques

L’équipe de direction de WP 6.1 et plusieurs centaines de contributeurs et contributrices ont travaillé sur plus de 120 améliorations et nouvelles fonctionnalités241 correctifs et 42 autres tâches variées, ce qui représente plus de 400 tickets sur Trac.

À cela, il faut ajouter plus de 50 pull requests ayant permis de fusionner les différentes versions de Gutenberg dans le cœur du CMS. Du côté du projet Gutenberg il y a eu en tout 1684 pull requests apportant 425 nouvelles fonctionnalités et améliorations et 428 correctifs de bugs, le reste concernant des tâches courantes de revue de qualité du code, de documentation ou d’amélioration des outils de déploiement.

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

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.1 lorsque cette version sortira le 1er novembre 2022.

Performances

Avec 45 tickets sur Trac pour WP 6.1, l’amélioration des performances et des temps de chargement de WordPress a été l’un des enjeux principaux de cette version. Les changements les plus significatifs portent sur les requêtes WP_Query et sur l’API REST, deux points qui impactent grandement les temps de chargement de votre site. L’un des changements les plus attendus concernait notamment la mise en cache des requêtes WP_Query, et c’est maintenant une réalité avec WP 6.1.

De nouveaux points de contrôle ont aussi été ajoutés dans l’écran de Santé du site, qui vous indiquera maintenant si la mise en cache des pages et le cache persistant fonctionnent correctement sur votre site.

Plusieurs améliorations conséquentes sur l’API de mise en cache de WordPress ont également été mises en œuvre, et l’ordre d’exécution général des crochets d’action a été optimisé pour retarder le moins possible l’affichage des pages.

L’enregistrement de blocs personnalisés pour l’éditeur à l’aide de fichiers block.json a aussi été rendu bien plus performant.

Et ce n’est qu’une petite partie des améliorations de performances de WP 6.1. Pour en découvrir plus, voici un guide spécifique sur les performances dans cette nouvelle version de WP :

Accessibilité

Il s’agit du second focus principal de WordPress 6.1, avec 28 tickets sur Trac, concernant 13 des principaux composants du CMS. De nombreuses améliorations ont été faites sur l’éditeur de blocs et sur la fonctionnalité d’édition complète du site, quelques éléments encore non conformes sur les différents écrans d’administration ont été corrigés, et beaucoup d’autres améliorations ont été faites pour faciliter l’utilisation de WordPress par toutes et tous.

Une attention particulière a également été portée sur la gestion des champs requis sur les différents formulaires de l’interface d’administration : pour faciliter leur maintenance, une petite API a été créée afin de gérer de façon centralisée leur affichage. Celle-ci est publique et peut donc être utilisée par les personnes réalisant des développements sur mesure.

Notons également qu’avec WordPress 6.1, les deux thèmes natifs Twenty Twenty-Three (nous reparlerons de celui-là dans un article dédié !) et Twenty Twenty-Two font leur entrée parmi les premiers Block Themes (ces thèmes entièrement modifiables avec l’éditeur de blocs) ayant obtenu le libellé accessibility-ready sur le répertoire de thèmes WordPress.org.

Pour en savoir plus sur toutes ces améliorations concernant l’accessibilité de WordPress, consultez le guide spécifique proposé par l’équipe Accessibility :

L’éditeur de blocs

C’est évidemment encore et toujours un des axes concentrant le plus d’évolutions d’une version à une autre 😊

WordPress 6.1 embarque les versions 13.113.213.313.413.513.613.713.813.914.0, et 14.1 du projet Gutenberg.

Parmi les nombreux changements de ces 10 versions de l’extension Gutenberg, un gros effort a été fait pour rendre les blocs et autres fonctionnalités de l’éditeur de plus en plus disponibles pour les thèmes « classiques », c’est à dire les thèmes qui ne prennent pas encore en charge l’édition complète du site à l’aide de blocs, une fonctionnalité introduite dans le CMS en 2022 avec WordPress 5.9.

L’objectif est de faciliter le travail des développeuses et des développeurs pour effectuer une transition de leurs thèmes « classiques » vers le principe du thème basé sur des blocs, que celui-ci soit entièrement ou partiellement modifiable dans l’éditeur. Nous espérons que cela poussera encore plus les personnes développant des thèmes WordPress à exploiter au maximum les fonctionnalités de l’éditeur.

Par ailleurs, de nombreuses fonctionnalités utiles au quotidien ont été ajoutées dans cette version : filtrage des données du theme.json, nouveau système de gestion des préférences dans l’éditeur, possibilité de modifier et étendre le bloc « Boucle de requête », et bien plus encore.

Vous trouverez ci-dessous les différentes notes de développement concernant l’éditeur de WordPress :

Par ailleurs, la note de développement suivante fournit un état des lieux très pratique des blocs natifs et de leurs différentes possibilités de formatage :

Développement de thèmes WordPress

Les notes de développement suivantes présentent des changements qui concernent tout particulièrement les développeuses et développeurs de thèmes.

Tout d’abord, l’entête Update URI qui doit être utilisé si vous développez des thèmes sur mesure n’ayant pas vocation à être déployés sur le répertoire WordPress.org. Cela évitera que votre site propose une mise à jour et écrase votre thème dans le cas où un thème du répertoire officiel porterait le même identifiant (slug) que le vôtre !

Ensuite nous avons plusieurs notes de développement concernant les interactions entre les thèmes et l’éditeur de site. Et notamment la possibilité de créer des éléments de modèles basés sur des blocs au sein d’un thème classique, c’est à dire d’un thème ne proposant au départ pas de compatibilité avec l’édition complète de site (full site editing).

Enfin, on notera l’arrivée de la gestion fluide des polices typographiques, qui permettent de définir la taille de typo de façon à ce qu’elle s’adapte dynamiquement à la largeur de l’écran.

Twenty Twenty-Three, le nouveau thème natif

Twenty Twenty-Three est le nouveau thème par défaut de WordPress.

Comme son prédécesseur, il exploite à 100 % les fonctionnalités de l’éditeur de site. Il va même beaucoup plus loin en intégrant nativement 10 variations de styles permettant de modifier complètement l’interface depuis l’administration.

Ces 10 variations de styles ont été sélectionnées à l’aide d’un appel à contribution. L’objectif est de montrer par l’exemple comment se comportent les nouvelles fonctionnalités de l’éditeur de site, et notamment comment exploiter le fichier theme.json.

Vous trouverez ci-dessous une vidéo balayant les 10 variations de styles de ce thème.

Comme d’habitude, ce thème natif a été développé sur GitHub (où vous retrouverez l’historique du projet) puis intégré au cœur de WordPress pendant la phase de développement de la version 6.1.

Autres améliorations

API REST

L’API REST a vu l’arrivée d’améliorations concernant le point de terminaison /search ainsi que de l’affichage des réponses JSON pouvant être controlées via le filtre rest_json_encode_options. Toutes les améliorations de l’API sont décrites dans la note de développement suivante :

Page de connexion

Une nouvelle fonction attendue depuis plus de 10 ans a fait son entrée dans la boîte à outils des développeuses et développeurs : is_login() permet de déterminer si l’on se trouve sur la page de connexion ou non.

Tableaux de listes de l’admin

Une nouvelle méthode fait son apparition, afin de pouvoir interagir et filtrer plus facilement les liens de visualisation présents dans ces tableaux.

Médias

Avec la version 5.8, nous avons accueilli la prise en charge du format WebP et nous prévoyions initialement d’intégrer la génération automatique et par défaut d’images dans ce format dans WordPress 6.1, mais le commit associé a finalement été annulé avec la recommandation de plutôt intégrer cette fonctionnalité dans une extension canonique.

En revanche, la propriété muted est maintenant disponible pour les vidéos insérées dans l’éditeur, ce qui permet de rendre silencieuse les vidéos ayant vocation à être lancées automatiquement (propriété autoplay). Ceci est obligatoire pour les vidéos automatiques.

Autres changements techniques

WordPress 6.1 introduit de nombreuses nouvelles fonctions et crochets d’action ou filtres. Ces changements sont détaillés dans la note de développement suivante :

En plus de tous ces changements, on notera les évolutions suivantes, triées par composant du cœur WP :

  • Mots de passe d’applications : les super admins peuvent mettre en place un mot de passe d’application sur un site auquel ils n’ont pas été rattachés (#53224)
  • Sauvegardes automatiques : les utilisateur·ices ayant un blocage via la fonctionnalité post lock pouvaient auparavant tricher en surchargeant les modifications via les sauvegardes automatiques (#55659)
  • API de gestion du cache : ajout des fonctions wp_cache_flush_group et wp_cache_supports (#4476#56605)
  • Charset : ajout de l’échappement des caractères unicode NFD dans remove_accents() (#35951)
  • API Cron : ajout de la journalisation des erreurs et de crochets associés dans wp-cron.php (#56048)
  • Éditeur : clarification du fait que get_page_template() ne fonctionne pas sur les thèmes basés sur des blocs (#56394)
  • Compositions de blocs : ajout d’une catégorie « Pieds de page » (#56416)
  • Bibliothèque tierces :
    • Correction sur Thickbox pour la prise en charge des images WebP #55786
    • Mise à jour de PHPMailer à la version 6.6.4 #55976#56016#56413
    • Mise à jour de Underscore à la version 6.1 #56030
    • Mise à jour de Moment à la version 6.1 #56031
    • Mise à jour de jQuery UI à la version 6.1 #56239
    • Mise à jour de mediaelement.js à la version 4.2.17 #56319
    • Mise à jour de jQuery à la version 3.6.1 #56451
    • Mise à jour de Sodium Compat à la version 1.19.0 #56564#56653
    • Mise à jour de GetID3 à la version 1.9.22 #56692
  • Formatage :
    • Suppression des accents combinés dans remove_accents() #24661
    • Inversement de l’encapsulation de sanitize_url() et esc_url_raw() #55852
    • Correction de la valeur retournée par safecss_filter_attr() #55966
    • Autorisation de l’utilisation de propriétés CSS spécifiques à la mise en page dans le filtre safe_style_css #56122
    • Autorisation de l’utilisation de variables CSS dans safecss_filter_attr #56353
  • Général :
    • Mise à jour de is_serialized pour accepter les Enums #53299
    • Remplacement des appels à phpversion() par la constante PHP_VERSION #55680
    • Suppression des doublons d’utilisation de realpath() #56636
    • Suppression des doublons d’utilisation de file_get_contents #56637
    • Suppression des appels à file_exists() sur les variables utilisant realpath() #56654
    • Suppression des doublons d’utilisation de get_theme_file_path dans register_block_style_handle #56666
    • Correction du retour obtenu en utilisant wp_rand( 0, 0) #55194
  • Internationalisation : correction d’un bug conduisant switch_to_locale() à annuler le chargement des traductions des thèmes et des extensions #39210
  • Page de connexion/inscription :
    • Les champs obligatoires de la page d’inscription sur les multisites n’avaient pas d’attribut required #54344
    • Ajout de description ARIA sur les champs d’erreur de connexion #54483
  • Médias : correction d’un bug sur l’interprétation de l’orientation des images via leurs données EXIF #54937
  • Multisite :
    • Suppression complète des termes globaux #21734
    • Utilisation de l’API des métadonnées pour les options du réseau #37181
    • Stockage de l’ID du site principal dans les options du réseau multisite #55802
  • Chargement des scripts : mise en place des scripts en front-end via viewScript pour les blocs dynamiques #56470
  • Publications : correction de la vérification des publications non existantes dans get_post_permalink() #45329
  • Taxonomies :
    • Dans wp_insert_term, passage de $args en tant que paramètre additionnel pour les actions d’après-insertion (create_term, created_term, etc.) #55441
    • Les liens d’archives de catégories n’incluent plus par défaut la description dans l’attribut title du lien #55530
    • Les champs des termes sont maintenant associés avec leurs description dans l’admin #55651
  • Mises à jour :
    • Ajout d’un suivi de l’usage des modules PHP installés sur les sites WP #48116
  • Widgets :
    • Suppression de requêtes inutiles vers la base de données #54677

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.1 RC 1. Nous comptons sur vous pour vous assurer que votre code fonctionne correctement avec le cœur du CMS, pour le bien des millions d’utilisateurs et utilisatrices de WordPress ♥️

Ce guide en français a été rédigé par Jb Audras avec l’aide de FX Bénard et Jenny Dupuy.

2 réflexions sur « Guide des changements techniques de WordPress 6.1 »

  1. Hello Stéphane,
    Hé oui !
    Comme quoi il faut toujours remonter les problèmes si on veut qu’ils se résolvent ✌️
    La prochaine fois, le challenge ce sera de le remonter directement sur Trac 🙂

    A bientôt,
    Jb

Laisser un commentaire