¿Cómo extraer datos de un array serializado de meta datos de una entrada?

27 may 2011, 17:21:47
Vistas: 62.5K
Votos: 34

Encontré un script decodificador de XML a WP que almacena los datos como un array en un campo meta personalizado. ¿Cuál es la mejor manera de extraer la información?

Por ejemplo, ¿cómo podría mostrar el campo "Manufactured in" como "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";}} )

El código de ejemplo anterior fue producido mediante print_r(get_post_custom($post->ID));.

Agradezco cualquier ayuda, por pequeña que sea. :)

1
Comentarios

Si vas a votar negativamente una pregunta, al menos sé lo suficientemente adulto como para decir por qué. Estoy esforzándome mucho por aprender PHP. Esto puede ser algo básico para la mayoría de los programadores, pero yo vengo de un entorno de diseño.

MTT MTT
27 may 2011 19:59:08
Todas las respuestas a la pregunta 2
3
50

Usa unserialize() para convertirlo en 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];

Editar- Pensamiento relacionado- algo a tener en cuenta cuando se almacenan metadatos serializados de esta manera es que limitas tu capacidad de usar esos datos en consultas, si eso es una preocupación para ti. Por ejemplo, no es tan fácil escribir consultas como "muéstrame todas las partes fabricadas en Canadá", u ordenar resultados por ID de motor, ya que esos datos están guardados con un montón de otros datos en un solo campo.

27 may 2011 17:34:46
Comentarios

@M.Taylor - de nada, revisa la edición que agregué sobre datos serializados y consultas, no estoy seguro si es algo que te preocupe, pero podría ser.

Milo Milo
27 may 2011 17:54:21

Haces un buen punto sobre perder la capacidad de buscar en los datos. Tendré que investigar cómo no almacenarlos en un arreglo serializado, dado que no escribí el script.

MTT MTT
27 may 2011 18:07:50

@M.Taylor No lo tengo, lo siento. Estoy seguro de que alguien aquí podrá ayudar.

Milo Milo
27 may 2011 18:32:33
0

Puedes usar esta función del codex de WordPress que convierte los datos en un array.

maybe_unserialize($data);

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

19 ene 2021 14:20:20