Guide des changements techniques de WordPress 6.0

Maintenant que la première version Release Candidate de WordPress 6.0 est sortie, il est grand temps d’explorer les modifications apportées par cette future version, dont la sortie est prévue pour le 24 mai 2022. WordPress 6.0 est une version majeure de même niveau que WP 5.8 ou WP 5.9. Elle apportera le principe des variations de styles, l’interface de verrouillage des blocs, plusieurs améliorations de l’éditeur, encore plus d’outils de design, de nouveaux crochets et filtres, des mises à jour des différentes bibliothèques utilisées par WP, et bien plus encore !

Au bas mot, ce seront au moins 97 améliorations et nouvelles fonctionnalités131 corrections de bogues, 13 correctifs sur l’éditeur de bloc, ainsi que 23 autres changements divers, ce qui représente au total 231 tickets Trac.

La nouvelle équipe chargée des performances de WordPress a aussi travaillé dur pour améliorer diverses parties du CMS. De nombreuses requêtes ont été optimisées et certaines d’entre elles ont été retirées, la gestion du cache a été perfectionnée, et de nombreux doublons de traductions ont été enlevés afin d’améliorer la vitesse de chargement de WP sur les installations non anglophones.

C’est parti pour un petit tour d’horizon des nouveautés de WordPress 6.0 !

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.

À noter : certaines modifications listées ici vont nécessiter des actions 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.0 lorsque cette version sortira le 24 mai 2022.

Accessibilité

De même que pour les performances, l’accessibilité de WordPress a été grandement améliorée. La note de développement suivante détaille les différentes améliorations effectuées.

L’éditeur de blocs

L’éditeur a bien entendu reçu de nombreuses améliorations :

  • Possibilité de construire de multiples variations de styles pour les thèmes basés sur des blocs ;
  • Possibilité de créer des compositions de contenu de pages que les rédacteurs et rédactrices pourront utiliser ou non pour construire leurs pages de contenu ;
  • Nouvelle propriété ancestor dans le fichier block.json afin de permettre la restriction des endroits où les rédacteurs et rédactrices peuvent placer leurs blocs ;
  • Une nouvelle interface de verrouillage des blocs à l’aide de l’attribut lock ;
  • Déclaration et enregistrement de blocs au sein des thèmes ;
  • Amélioration de la préservation des contenus non reconnus comme des blocs dans l’éditeur ;
  • Une fonctionnalité d’exportation des blocs des thèmes plus robuste au sein de l’éditeur ;
  • Des mises à jour du balisage des blocs image, citation, liste et groupe ;
  • De nouveaux blocs tels que le bloc de commentaires de la publication, le bloc « Aucun résultat », et bien plus encore…

À noter que si vous utilisez la version extension de Gutenberg (ce qui ne devrait être le cas que sur un site destiné à des expérimentations), vous devrez impérativement la mettre à jour vers sa toute dernière version avant de mettre à jour votre site avec la version 6.0 de WordPress.

Sans plus attendre, voici les notes de développement liées à l’éditeur :

Processus de chargement de WordPress

Entre autres améliorations concernant les performances du logiciel, le processus de chargement de WordPress (le « bootstrap ») a été amélioré afin de permettre aux développeurs et développeuses d’ignorer les requêtes non nécessaires avec le filtre do_parse_request.

API de gestion du cache

Avec WordPress 6.0, l’API wp_cache_*_multiple devient une API complètement CRUD (voir le terme « CRUD » sur Wikipédia). Par ailleurs, une option permettant de réinitialiser le temps d’exécution du cache sans réinitialiser l’entièreté du cache persistant a été ajoutée.

Médias

La gestion des médias a elle aussi reçu de nouveaux filtres et plusieurs améliorations d’interface :

  • Activation de la modification des tailles d’images personnalisées à l’aide du filtre edit_custom_thumbnail_sizes qui permet aux développeuses et développeurs de modifier les tailles d’images personnalisées individuelles (Voir le ticket #28277) ;
  •  Ajout d’une fonction « copier l’URL dans le presse-papier » sur la vue en liste des médias (Voir le ticket #54426).

Le composant Médias a par ailleurs lui aussi reçu des améliorations de performances :

Types de publications

WordPress 6.0 introduit encore davantage de crochets et filtres dynamiques pour les types de publications et les taxonomies.

Taxonomies

Les taxonomies ont reçues des améliorations de performances, notamment à travers la mise en cache des requêtes sur les termes de taxonomies, et via l’ajout de limites aux requêtes concernant les taxonomies, mais aussi au niveau des éléments de menus de navigation.

Thèmes

Cette nouvelle version offre aux auteurs et autrices de thèmes une façon encore plus efficace de travailler avec les compositions de blocs, la prise en charge de multiples fichiers theme.json avec l’éditeur de site, et bien plus encore.

Les thèmes basés sur des blocs peuvent maintenant se passer du fichier index.php

Avec cette modification, il n’est maintenant plus nécessaire d’avoir un fichier modèle index.php. Jusqu’à présent, il était nécessaire d’en avoir un même s’il n’était pas utilisé. Dorénavant, ce fichier est remplacé par le fichier templates/index.html. Voir le ticket #54272.

Correction de la logique d’affichage des avertissements _doing_it_wrong() pour add_theme_support( ‘html5’ )

  • Le fait d’appeler add_theme_support( 'html5' ) sans passer un tableau de types pris en charges affiche maintenant un avertissement _doing_it_wrong() : « Vous devez passer un tableau de types » ;
  • Si le second paramètre n’est pas spécifié, un tableau contenant comment-listcomment-form, et search-form sera automatiquement passé en tant que solution de repli, pour assurer la rétrocompatibilité de la fonction ;
  • Si le second paramètre n’est pas un tableau, la fonction retournera false.

Pour plus d’informations, voir le ticket #51657.

Comptes

Avec WP 6.0, les installations comprenant plus de 10 000 comptes ont reçu des améliorations de performances sur les requêtes concernant les comptes.

Autres changements techniques

WordPress 6.0 apporte également :

  • Un filtre destiné aux auteurs et autrices d’extensions qui leur permet de modifier la description de leur extension telle qu’elle est affichée sur l’écran Extensions > Ajouter et/ou sur l’écran Administration du réseau > Extensions > Ajouter ;
  • La possibilité de filtrer l’ensemble de la notification e-mail envoyée par retrieve_password ;
  • La possibilité de retirer les icônes de sites sur les réseaux multisites.

Et bien plus encore…

Plus de 131 corrections de bugs97 améliorations et nouvelles fonctionnalité, ainsi que 23 tâches diverses ont été ajoutés dans WordPress 6.0.

Voici quelques modifications qui méritent d’être soulignées :

  • Administration : ajout d’un filtre media_date_column_time à la colonne de date de l’écran de liste des médias. De façon similaire au filtre existant post_date_column_time pour les publications, ce filtre permet de modifier l’affichage du contenu de la colonne « Date » (voir le ticket #42942) ;
  • Outils de build et de tests :
    • Mise à jour de webpack vers la version v5.x. Cela rapproche WordPress de la façon dont l’extension Gutenberg gère ses paquets ;
    • WordPress 6.0 active également la prise en charge de « React Fast Refresh » pour le développement de blocs avec @wordpress/scripts ;
    • Cette nouvelle version ajoute aussi la dernière version de caniuse-lite qui permet de s’assurer que les outils de build de WP ciblent la dernière version des navigateurs pris en charge par WordPress (voir les tickets #51750 et #55505) ;
    • Un fichier .git-blame-ignore-revs a été ajouté au répertoire de développement de WP afin de rendre la fonctionnalité git blame plus efficace sur GitHub (voir le ticket #55422) ;
    • La commande npm install a été corrigée pour les contributeurs et contributrices utilisant des appareils « Apple M series silicone » en mettant à jour la dépendance technique grunt-contrib-qunit (voir le ticket #52690) ;
  • Thèmes natifs : si vous rencontriez des soucis avec l’ordre des éléments dans le formulaire de commentaires du thème Twenty Nineteen, nous avons une bonne nouvelle : ceci a été corrigé dans le ticket #46600 ;
  • URL canoniques : la fonction redirect_guess_404_permalink() inclue maintenant tous les états publics des publications, et pas uniquement l’état « publié » / publish, dans les redirections 404 de recherche (voir le ticket #47911) ;
  • Commentaires : accélération du chargement SQL du tableau de bord et de la modération des commentaires (voir le ticket #19901) ;
  • Emojis : mise à jour de la bibliothèque Twemoji vers la version 14.0.2. Cette version introduit la prise en charge des derniers Emojis ajoutés dans la version 14 (voir le ticket #55395) ;
  • Bibliothèques externes :
    • Mise à jour de Jcrop à la version 0.9.15 (ticket #54035) ;
    • Mise à jour de jQuery Color à la version 2.2.0. Suppression de la version embarquée (qui existait toujours dans le cœur WP) en faveur de l’amélioration du processus Grunt pour plutôt inclure le paquet depuis NPM (ticket #55016) ;
    • Mise à jour de random_compat à la version 2.0.21. Cela améliore la compatibilité avec PHP 8.1 et corrige des bogues avec les plateformes Windows (ticket #55181) ;
    • Mise à niveau de PHPMailer à la version 6.5.4. Amélioration de compatibilité PHP et sécurisation contre les hébergeurs désactivant certaines fonctions de sécurité. Note aux hébergeurs : ne désactivez pas les fonctions escapeshellarg() et escapeshellcmd(), cela présente un risque de sécurité ! (ticket #55187) ;
    • Mise à niveau de PHPMailer à la version 6.6.0 (ticket #55277) ;
    • Mise à jour de sodium_compat à la version 1.17.1. Amélioration de la compatibilité PHP 8.1 (ticket #55453)
    • Mise à jour de backbone de la version 1.4.0 à la version 1.4.1 ;
    • Mise à jour de underscore de la version 1.13.1 à la version 1.13.2 ;
    • Mise à jour de clipboard de la version 2.0.8 à la version 2.0.10 (ticket #55547) ;
  • Formatage :
    • Ajout de la prise en charge des formatage de tailles PB, EB, ZB, and YB (ticket #40875)
  • KSES :
    • Prise en charge de l’élément <ruby> et des autres éléments liés. Cela est particulièrement utile pour le contenu écrit en japonais ou chinois, via les éléments HTML <ruby><rt> et <rp> dans le standard HTML, ainsi que <rb> et <rtc> pour des options de formatage avancées (ticket #54698) ;
    • Ajout global de la prise en charge des attributs langxml:langdir en tant qu’attributs utilisables sur n’importe quel élément HTML, ce qui améliore considérablement les possibilités de produire du contenu accessible (ticket #54699) ;
    • La fonction get_the_author_link() devient filtrable sur WordPress 6.0, via le filtre get_the_author_link, afin de permettre l’altération de l’affichage du lien vers l’auteur/autrice de chaque publication (ticket #51859) ;
  • Internationnalisation :
    • Le séparateur des éléments de liste est maintenant une propriété de WP_Locale (voir le ticket #39733) ;
    • Les chemins de langues sont maintenant définissables dans la fonction register_block_type (ticket #54797) ;
  • Médias : suppression du filtre attachment_fields_to_save filter et dépréciation de la fonction image_attachment_fields_to_save(). Cette fonction n’était plus utilisée par le cœur WP (ticket #39108) ;
  • Réseaux multisites : amélioration de la génération du cache des clés sur WP_Site_Query (ticket #55462) ;
  • Extensions :
    • Ajout du filtre plugin_install_description (ticket #55480)
    • Conversion de apply_filters() en une vraie fonction variadique. Une fonction variadique est une fonction d’arité indéfinie, c’est-à-dire qu’elle accepte un nombre variable de paramètres (voir le ticket #53218) ;
  • Publications et types de publications : passage du paramètre $update aux filtres wp_insert_post_data et wp_insert_attachment_data. Cela facilite la détermination de l’existence d’une publication lors de sa mise à jour (ticket #46228) ;
  • Taxonomies : mutualisation de la traduction des libellés de taxonomies afin d’améliorer les performances générales de l’administration WordPress (ticket #26746).

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.0 RC1. 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 ♥️

Rédigé par Jb Audras d’après le Field Guide en anglais. Merci à Valérie Galassi, FX Bénard et Jenny Dupuy pour la relecture.