Come estrarre dati da un array serializzato nei meta post?
Ho trovato uno script decoder da XML a WP che memorizza i dati come array in un campo meta personalizzato. Qual è il modo migliore per estrarre le informazioni?
Per esempio, come potrei visualizzare il campo "Manufactured in" come "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";}} )
Il codice di esempio sopra è stato prodotto tramite print_r(get_post_custom($post->ID));
.
Apprezzo molto qualsiasi suggerimento, per quanto piccolo. :)
Utilizza unserialize() per convertirlo in 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];
Modifica - Considerazione correlata: una cosa da tenere a mente quando si memorizzano metadati serializzati in questo modo è che si limita la capacità di utilizzare quei dati nelle query, se questo è un aspetto che ti interessa. Ad esempio, non è così semplice scrivere query come "mostrami tutti i pezzi fabbricati in Canada", oppure ordinare i risultati per ID motore, poiché quei dati sono nascosti insieme ad altri dati in un unico campo.

@M.Taylor - prego, controlla la modifica che ho aggiunto riguardo ai dati serializzati e alle query, non sono sicuro che sia un problema per te, ma potrebbe esserlo.

Fai un'ottima osservazione riguardo alla perdita della capacità di cercare i dati. Dovrò verificare come non memorizzarli in un array serializzato, considerando che non ho scritto lo script.

Puoi utilizzare questo codice WordPress che converte in un array.
maybe_unserialize($data);
https://developer.wordpress.org/reference/functions/maybe_unserialize/
