Cum să stocați opțiuni cu sintaxa a:n:{{}} în wp_options?

6 ian. 2011, 18:03:47
Vizualizări: 5.88K
Voturi: 9

Analizez cum funcționează un anumit plugin și am observat că stochează datele pentru option_value în wp_options în acest format de 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 place această metodă, deoarece folosește doar un singur rând pentru a stoca datele personalizate, iar curățarea la dezinstalare este ușoară. Există o metodă standard pentru a efectua operații get/set pe un câmp personalizat care să rezulte în această sintaxă?

Actualizare: Mulțumesc lui Denis și celorlalți care au adăugat răspunsuri.

Iată un tutorial excelent despre această metodă în cazul în care mai cineva are această întrebare > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

0
Toate răspunsurile la întrebare 3
5

Pur și simplu transmiteți un array atunci când actualizați opțiunea. Acesta va fi serializat automat.

6 ian. 2011 18:05:53
Comentarii

Mulțumesc, Denis. Iată un tutorial excelent despre această metodă, în caz că mai are cineva această întrebare > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Scott B Scott B
6 ian. 2011 18:36:33

Wow - Nu aveam idee. Am încercat să le serializez eu însumi.

Don Gilbert Don Gilbert
6 ian. 2011 21:20:26

Acest format este specific WordPress?

trusktr trusktr
28 mai 2012 23:13:12

Notă: De asemenea, poți transmite un obiect (stdClass de exemplu). Când folosești get_option vei primi exact același obiect înapoi :)

Brian Brian
19 mar. 2015 21:32:41

@Brian: De fapt, nu este stdClass de exemplu. Este doar stdClass, altfel WP va avea o eroare la încărcare dacă clasa nu există, opțiunea este setată pentru autoload și niciun autoloader de clasă nu poate găsi clasa corespunzătoare.

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

Serializarea se face automat, dar dacă dorești să știi cum să faci acest lucru manual, funcția pe care trebuie să o analizezi se numește serialize().

6 ian. 2011 18:09:30
0

Conform altor răspunsuri, (de)serializarea este efectuată automat pentru formate de date mai complexe (tablouri, obiecte) atunci când opțiunile sunt stocate sau preluate. Acest lucru se aplică și pentru transienti și alte funcționalități.

Din punct de vedere tehnic, acest lucru este realizat prin utilizarea internă a funcțiilor maybe_serialize() și maybe_unserialize(), care încearcă să determine dacă datele trebuie procesate sau transmise așa cum sunt.

6 ian. 2011 18:26:14