Как извлечь данные из сериализованного массива post meta?
Я нашел скрипт декодера XML в WP, который сохраняет данные как массив в пользовательском поле meta. Какой лучший способ извлечь эту информацию?
Например, как я могу отобразить поле "Manufactured in" со значением "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";}} )
Пример кода выше был получен с помощью print_r(get_post_custom($post->ID));
.
Буду благодарен за любую подсказку, даже самую маленькую. :)

Используйте функцию unserialize() для преобразования строки в массив.
$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];
Примечание - Связанная мысль - при хранении метаданных в сериализованном виде важно учитывать, что это может ограничить возможность использования этих данных в запросах, если это важно для вас. Например, будет не так просто написать запросы типа "показать все детали, произведенные в Канаде" или сортировать результаты по идентификатору двигателя, поскольку эти данные скрыты в одном поле вместе с другой информацией.

@M.Taylor - пожалуйста, посмотрите моё дополнение о сериализованных данных и запросах, не уверен, что это важно в вашем случае, но может быть.

Вы правильно подметили насчёт потери возможности поиска по данным. Мне нужно разобраться, как не хранить их в сериализованном массиве, учитывая что я не писал этот скрипт.

Вы можете использовать этот кодекс WordPress, который преобразует данные в массив.
maybe_unserialize($data);
https://developer.wordpress.org/reference/functions/maybe_unserialize/
