Hur man tar bort Gutenberg-block
Ett av de vanligaste problemen med att uppdatera ett tema eller plugin med Gutenberg-block är att ändringar i blockkoden kommer att bryta alla befintliga inlägg som använder det blocket. Som tur är erbjuder WordPress en lösning; ett sätt att avskaffa block. I det här inlägget ska vi titta på hur man gör detta.
Om du har arbetat med blockutveckling tidigare är du förmodligen bekant med detta blockfel när du har lagt till ett block och sedan ändrat save
funktionen.
Detta beror på att WordPress jämför det sparade blocket i databasen med den aktuella koden i save
funktionen i ditt block, och de stämmer inte överens. WordPress kan inte korrigera skillnaden. I de flesta fall kan du klicka på de tre prickarna på blocket och välja "Attempt Block Recovery". Om ändringarna som gjorts i save
funktionen var små (t.ex. en klassändring) kan WordPress återställa blocket. Worst case scenario you’ d måste klicka på "Konvertera till HTML" och du kommer att förlora blockets edit
funktionalitet. Vi kan naturligtvis inte förvänta oss att användarna av vår blockkod manuellt ska hitta alla inlägg som använder detta block och utföra dessa steg för var och en.
Så innan vi gör uppdateringar av save
funktionen lägger vi till lite kod för att berätta för WordPress hur man hanterar gammalt innehåll som har sparats med den gamla save
funktionen.
Låt oss komma in i koden!
Det är faktiskt ganska enkelt. Kort sagt vad vi behöver göra är; lägg till en deprecated
egenskap till registerBlockType()
funktionsanropet. Den här egenskapen förväntar sig en array. Det betyder att du kan fasa ut ett block flera gånger genom att tillhandahålla flera poster i arrayen. Varje avskrivning definieras som ett objekt som innehåller hela attributes
egenskapen och den (gamla) save
funktionen.
Med andra ord, du definierar en deprecated
egenskap som en array och sedan kopierar du ditt blocks attributes
och save
funktion in i den. Du måste inkludera attribut även om du inte ändrar något i dem i uppdateringen. Du behöver inte ta med edit
funktionen i avskrivningen.
Låt oss gå om detta i ett mer praktiskt exempel.
Anta att vår blockkod ser ut ungefär så här. Funktionen edit
är exkluderad då vi inte behöver hantera den i avskrivningar.
Låt oss då anta att vi vill göra ändringar i båda attributen och spara och undvika att bryta befintliga block. Vi lägger till deprecated
egenskapen och kopierar hela attributes
och save
som ett arrayelement in i den. Sedan är vi fria att göra eventuella ändringar i attributes
eller/och save
funktion.
Med den här koden kompilerad kan du hitta ett befintligt inlägg med den gamla blockkoden, och du bör inte få någon trasig kod!
WordPress kommer att ta reda på att blocket använder vår föråldrade kod och laddar innehållet med den föråldrade save
koden. När du gör ändringar i blocket och uppdaterar inlägget kommer blocket att sparas med den nya save
funktionen.
Mer avancerad avskrivning och vidare läsning
Ovanstående kodexempel är den mest grundläggande formen för avskrivning. WordPress stöder mer funktionalitet, som att inkludera migrate
och supports
till och med tilldela konstanter (tänk versionsnummer) till din föråldrade kod. Ta en titt på WordPress dokumentation om blockavskrivning.