L’un des problèmes les plus courants liés à la mise à jour d’un thème ou d’un plugin avec des blocs Gutenberg est que la modification du code de bloc cassera toutes les publications existantes utilisant ce bloc. Heureusement, WordPress propose une solution ; un moyen de déprécier les blocs. Dans cet article, nous verrons comment procéder.
Si vous avez déjà travaillé avec le développement de blocs, vous connaissez probablement cette erreur de bloc lorsque vous avez ajouté un bloc, puis modifié la save
fonction ultérieurement.
Cela se produit parce que WordPress compare le bloc enregistré dans la base de données avec le code actuel dans la save
fonction de votre bloc, et ils ne correspondent pas. WordPress n’est pas en mesure de combler la différence. Dans la plupart des cas, vous pouvez cliquer sur les trois points du bloc et choisir «Tenter la récupération du bloc ». Si les modifications apportées à la save
fonction étaient minimes (par exemple, un changement de classe), WordPress est en mesure de restaurer le bloc. Dans le pire des cas, vous d besoin de cliquer sur "Convertir en HTML" et vous perdrez la edit
fonctionnalité de votre bloc. Évidemment, nous ne pouvons pas nous attendre à ce que les utilisateurs de notre code de bloc trouvent manuellement tous les messages utilisant ce bloc et effectuent ces étapes pour chacun.
Donc, avant de mettre à jour la save
fonction, nous ajouterons du code pour indiquer à WordPress comment gérer l’ancien contenu qui a été enregistré avec l’ancienne save
fonction.
Entrons dans le code !
C’est en fait assez simple. En bref, ce que nous devons faire est; ajouter une deprecated
propriété à l’ registerBlockType()
appel de fonction. Cette propriété attend un tableau. Cela signifie que vous pouvez déprécier un bloc plusieurs fois, en fournissant plusieurs entrées dans le tableau. Chaque amortissement est défini comme un objet détenant la attributes
propriété complète et la (ancienne) save
fonction.
En d’autres termes, vous définissez une deprecated
propriété comme un tableau, puis vous y copiez votre bloc attributes
et votre save
fonction. Vous devrez inclure des attributs même si vous n’y modifiez rien dans la mise à jour. Vous n’avez pas besoin d’inclure la edit
fonction dans l’amortissement.
Allons-y dans un exemple plus pratique.
Supposons que notre code de bloc ressemble à ceci. La edit
fonction est exclue car nous n’avons pas besoin de la traiter dans l’amortissement.
Supposons ensuite que nous voulions apporter des modifications aux deux attributs et enregistrer et éviter de casser les blocs existants. Nous ajoutons la deprecated
propriété et copions le tout attributes
et save
en tant qu’élément de tableau dans celle-ci. Ensuite, nous sommes libres d’apporter des modifications à attributes
ou/et à save
la fonction.
Avec ce code compilé, vous pouvez rechercher un article existant en utilisant l’ancien code de bloc, et vous ne devriez pas obtenir de code cassé !
WordPress déterminera que le bloc utilise notre code obsolète et chargera le contenu à l’aide du save
code obsolète. Une fois que vous avez apporté des modifications au bloc et mis à jour la publication, le bloc sera enregistré à l’aide de la nouvelle save
fonction.
Amortissement plus avancé et lecture plus approfondie
L’exemple de code ci-dessus est la forme la plus basique d’amortissement. WordPress prend en charge davantage de fonctionnalités, telles que l’inclusion de migrate
, supports
et même l’attribution de constantes (pensez aux numéros de version) à votre code obsolète. Jetez un œil à la documentation de WordPress sur la dépréciation des blocs.