Attributi blocchi Gutenberg: ritornano ‘undefined’ se la fonte sono i post meta
EDIT DEL 10 GIUGNO 2019: Il motivo principale per cui ciò accadava era perchè i register_meta venivano chiamati all’interno di un file che veniva caricato solo nel backend. Rendendoli disponibili anche in front funziona tutto a dovere.
Lavorando nella creazione di nuovi blocchi per il mio plugin Yasr, ho perso quasi due pomeriggi interi su quello che poi ho scoperto essere un bug di Gutenberg , (il link è al duplicato, ma credo che vada più diretto al punto) che purtroppo ho scoperto solo dopo che avevo già realizzato il mio workaround: l’ho trovato infatti quando stavo creando una nuova issue su GitHub.
Andiamo con ordine: avevo bisogno di pescare un valore tra i postmeta e utilizzarlo all’interno del pannello del blocco che stavo creando.
L’attributo era quindi così:
overallRating: { type: ‘number’, source: ‘meta’, meta: ‘yasr_overall_rating’ }
Alla prima apertura di Gutenberg viene correttamente pescato, e a un determinata azione dell’utente, (quando inserisce un nuovo voto) il valore nel database viene aggiornato.
Quello che succedeva però era che, nonostante il valore nel database fosse correttamente aggiornato, quando il post veniva salvato o aggiornato, il valore per qualche oscuro motivo veniva ritornato come undefined . Questo succede solo quando il post viene aggiornato o salvato: ricaricando la pagina veniva visualizzato quello corretto.
Il mio workaround, che poi ho scoperto è stata anche la soluzione suggerita nell’issue su GitHub, è stata quella di lavorare con due attributi diversi
//this is from post meta overallRatingMeta: { type: ‘number’, source: ‘meta’, meta: ‘yasr_overall_rating’ }, //this is from gutenberg comments overallRatingAttribute: { type: ‘number’, default: 0 },
Il secondo attributo è uno di quelli di default di Gutenberg, che salva i dati come commenti del blocco, e che funziona senza noie.
Se il post è nuovo, o se non ha lo shortcode salvato, overallRatingAttribute sarà sempre 0. In questo caso, assegno a overallRatingAttribute il valore di overallRatingMeta.
Se, invece, nel post è gia presente lo shortcode , overallRatingMeta non verrà mai utilizzato.
Spero che questa post possa aiutare a risparmiare tempo a chi come me deve leggere o manipolare dei post meta all’interno di Gutenberg.
Utilizzo WordPress dal 2004, in modo continuativo dal 2008, come sviluppatore dal 2014. Ho realizzato il plugin Yasr – Yet Another Stars Rating che al momento conta oltre 1.700.000 downloads e più di 20.000 installazioni attive.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!