Невозможно выполнить несериализацию сериализованных значений WordPress в таблице `wp_options`?

У меня есть nav_menu_options в моей базе данных WordPress, как nav_menu_options ниже.

 284,'nav_menu_options','a:2:{i:0;b:0;s:8:\"auto_add\";a:0:{}}' 

Я попытался десериализовать это значение, но результатом является пустая строка – я поместил фрагмент кода в <my theme>/function.php как <my theme>/function.php ниже

 echo 'TRY #1'.'<br>'; $v = 'a:2:{i:0;b:0;s:8:\"auto_add\";a:0:{}}'; $d = unserialize($v); print_r($d); echo 'TRY #1 end'.'<br>'; echo 'TRY #2'.'<br>'; $v ='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";}}'; $d = unserialize($v); print_r($d); echo 'TRY #2 end'.'<br>'; 

Результат приведенного выше кода приведен ниже.

@ 1 значение десериализованного значения Worpdress будет пустым.

@ 2 пример действительного сериализованного значения получается как читаемый массив.

введите описание изображения здесь

Поэтому мой вопрос: почему мы не можем десериализовать сериализованные значения WordPress? – здесь также размещается на wordpress.org.

п.с.

1) Более подробное исследование кода WordPress показывает, что мы можем «декодировать» обсуждаемое значение с помощью get_option('nav_menu_options'); команда.

2) Значение nav_menu_options – это реальные данные, скопированные из базы данных

введите описание изображения здесь

Solutions Collecting From Web of "Невозможно выполнить несериализацию сериализованных значений WordPress в таблице `wp_options`?"

Ваша проблема состоит в том, что сериализованные строки содержат escape-косые черты, которые не оцениваются как таковые, потому что кавычка-кавычка является отдельной цитатой.

Ты используешь:

 $v = 'a:2:{i:0;b:0;s:8:\"auto_add\";a:0:{}}'; // wrong 

Вы должны использовать либо

 $v = "a:2:{i:0;b:0;s:8:\"auto_add\";a:0:{}}"; // ok 

или

 $v = 'a:2:{i:0;b:0;s:8:"auto_add";a:0:{}}'; // ok 

Кстати, вы никогда не должны вручную отменять значения в базе данных WordPress.

Когда вам нужно получить опцию (или метаданные или что-то, что может быть сериализовано), используйте функции WP: они неэтериализуют значение, когда это необходимо.

Например, для опций используйте get_option .

Если вы заинтересованы в том, как WordPress делает maybe_unserialize см. maybe_unserialize и is_serialized .