Come memorizzare le opzioni con la sintassi a:n:{{}} in wp_options?

6 gen 2011, 18:03:47
Visualizzazioni: 5.88K
Voti: 9

Sto esaminando il funzionamento di un plugin particolare e ho notato che memorizza i suoi dati per option_value in wp_options in questo formato array...

a:2:{i:20;a:2:{s:8:"original";s:15:"20.original.jpg";s:9:"thumbnail";s:12:"20.thumb.jpg";}i:8;a:2:{s:8:"original";s:14:"8.original.png";s:9:"thumbnail";s:11:"8.thumb.png";}}

Mi piace questo metodo, poiché utilizza solo una singola riga per contenere i miei dati personalizzati e la pulizia durante la disinstallazione è semplice. Esiste un modo standard per eseguire un'operazione get/set su un campo personalizzato che risulti in questa sintassi?

Aggiornamento: Grazie a Denis e agli altri che hanno aggiunto risposte.

Ecco un eccellente tutorial su questo metodo nel caso qualcun altro avesse questa domanda > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

0
Tutte le risposte alla domanda 3
5

Passa semplicemente un array quando aggiorni la tua opzione. Verrà serializzato automaticamente.

6 gen 2011 18:05:53
Commenti

Grazie Denis. Ecco un eccellente tutorial su questo metodo nel caso qualcun altro abbia questa domanda > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Scott B Scott B
6 gen 2011 18:36:33

Wow - Non ne avevo idea. Continuavo a provare a serializzarli da solo.

Don Gilbert Don Gilbert
6 gen 2011 21:20:26

Questo formato è specifico di WordPress?

trusktr trusktr
28 mag 2012 23:13:12

Nota: Puoi anche passare un oggetto (stdClass per esempio). Quando usi get_option otterrai esattamente lo stesso oggetto :)

Brian Brian
19 mar 2015 21:32:41

@Brian: In realtà, non è stdClass per esempio. È solo stdClass, altrimenti WP si bloccherà durante il caricamento se la classe non esiste, l'opzione è impostata per il caricamento automatico e nessun autoloader di classe riesce a trovare la classe appropriata.

Denis de Bernardy Denis de Bernardy
19 mar 2015 22:09:19
0

La serializzazione viene eseguita automaticamente, ma se vuoi sapere come farlo manualmente la funzione da esaminare si chiama serialize()

6 gen 2011 18:09:30
0

Come spiegato in altre risposte, la (de)serializzazione viene eseguita automaticamente su formati di dati più complessi (array, oggetti) quando le opzioni vengono memorizzate o recuperate. Questo vale anche per i transient e altre funzionalità.

Tecnicamente questa operazione viene eseguita internamente utilizzando le funzioni maybe_serialize() e maybe_unserialize() che cercano di determinare se i dati devono essere elaborati o passati così come sono.

6 gen 2011 18:26:14