Cum se extrag datele dintr-un array serializat din post meta?

27 mai 2011, 17:21:47
Vizualizări: 62.5K
Voturi: 34

Am găsit un script de decodare XML pentru WP care stochează datele ca array într-un câmp meta personalizat. Care este cea mai bună modalitate de a extrage informațiile?

De exemplu, cum aș putea afișa câmpul "Manufactured in" ca "CANADA"?

[_ttn_i_details] => Array ( [0] => a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}} )

Codul de exemplu de mai sus a fost generat folosind print_r(get_post_custom($post->ID));.

Apreciez orice sugestie, oricât de mică ar fi. :)

1
Comentarii

Dacă ai de gând să dai vot negativ la o întrebare, măcar fii suficient de matur să spui de ce. Încerc din greu să învăț PHP. Poate că pentru majoritatea programatorilor acesta este un lucru de bază, dar eu vin dintr-un mediu de design.

MTT MTT
27 mai 2011 19:59:08
Toate răspunsurile la întrebare 2
3
50

Folosește unserialize() pentru a-l converti într-un array.

$mydata = 'a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}}';
$mydata = unserialize($mydata);
echo $mydata['Manufactured in'][0];

Editare- Gând înrudit- ceva de ținut minte atunci când stochezi metadate serializate în acest fel este că îți limitezi capacitatea de a folosi acele date în interogări, dacă acest aspect îți este important. De exemplu, nu este atât de ușor să scrii interogări precum "afișează-mi toate piesele fabricate în Canada" sau să ordonezi rezultatele după ID-ul motorului, deoarece acele date sunt ascunse împreună cu o grămadă de alte date într-un singur câmp.

27 mai 2011 17:34:46
Comentarii

@M.Taylor - cu plăcere, verifică ediția pe care am adăugat-o despre datele serializate și interogări, nu sunt sigur că e relevant pentru tine, dar ar putea fi.

Milo Milo
27 mai 2011 17:54:21

Ai dreptate cu privire la pierderea capacității de a căuta în date. Va trebui să studiez cum să nu le stochez într-un array serializat, având în vedere că nu am scris scriptul.

MTT MTT
27 mai 2011 18:07:50

@M.Taylor Nu am, îmi pare rău. Sunt sigur că cineva de aici te poate ajuta însă.

Milo Milo
27 mai 2011 18:32:33
0

Puteți utiliza acest codex WordPress care convertește într-un array.

maybe_unserialize($data);

https://developer.wordpress.org/reference/functions/maybe_unserialize/

19 ian. 2021 14:20:20