Uno dei problemi più comuni con l’aggiornamento di un tema o di un plug-in con i blocchi di Gutenberg è che apportare modifiche al codice del blocco interromperà tutti i post esistenti che utilizzano quel blocco. Fortunatamente WordPress offre una soluzione; un modo per deprecare i blocchi. In questo post vedremo come farlo.
Se hai già lavorato con lo sviluppo dei blocchi in precedenza, probabilmente hai familiarità con questo errore di blocco quando hai aggiunto un blocco e successivamente modificato la save
funzione.
Ciò accade perché WordPress confronta il blocco salvato nel database con il codice corrente nella save
funzione nel blocco e non corrispondono. WordPress non è in grado di correggere la differenza. Nella maggior parte dei casi puoi fare clic sui tre punti sul blocco e scegliere "Tentativo di ripristino del blocco". Se le modifiche apportate alla save
funzione sono piccole (ad es. un cambio di classe), WordPress è in grado di ripristinare il blocco. Nel peggiore dei casi ‘ È necessario fare clic su "Converti in HTML" e perderai la edit
funzionalità del blocco Ovviamente non possiamo aspettarci che gli utenti del nostro codice di blocco trovino manualmente tutti i post utilizzando questo blocco ed eseguano questi passaggi per ciascuno.
Quindi, prima di aggiornare la save
funzione, aggiungeremo del codice per dire a WordPress come gestire i vecchi contenuti che sono stati salvati con la vecchia save
funzione.
Entriamo nel codice!
In realtà è piuttosto semplice. In breve, quello che dobbiamo fare è; aggiungere una deprecated
proprietà alla registerBlockType()
chiamata di funzione. Questa proprietà prevede una matrice. Ciò significa che puoi deprecare un blocco più volte, fornendo più voci nell’array. Ogni ammortamento è definito come un oggetto che contiene la attributes
proprietà completa e la (vecchia) save
funzione.
In altre parole, definisci una deprecated
proprietà come un array e poi copi i tuoi blocchi attributes
e save
funzioni al suo interno. Dovrai includere gli attributi anche se non stai modificando nulla in essi nell’aggiornamento. Non è necessario includere la edit
funzione nell’ammortamento.
Andiamo su questo in un esempio più pratico.
Supponiamo che il nostro codice di blocco assomigli a questo. La edit
funzione è esclusa in quanto non è necessario gestirla nell’ammortamento.
Quindi supponiamo di voler apportare modifiche a entrambi gli attributi e salvare ed evitare di rompere i blocchi esistenti. Aggiungiamo la deprecated
proprietà e vi copiamo l’intero attributes
e save
come elemento dell’array. Quindi siamo liberi di apportare modifiche attributes
o/e save
funzioni.
Con questo codice compilato, puoi trovare un post esistente usando il vecchio codice di blocco e non dovresti ottenere alcun codice rotto!
WordPress scoprirà che il blocco sta utilizzando il nostro codice deprecato e caricherà il contenuto utilizzando il save
codice deprecato. Una volta apportate modifiche al blocco e aggiornato il post, il blocco verrà salvato utilizzando la nuova save
funzione.
Ammortamenti più avanzati e ulteriori letture
L’esempio di codice sopra è la forma più semplice per l’ammortamento. migrate
WordPress supporta più funzionalità, come l’inclusione supports
e persino l’assegnazione di costanti (pensa ai numeri di versione) al tuo codice deprecato. Dai un’occhiata alla documentazione di WordPress sull’ammortamento dei blocchi.