#php #wordpress #serialization
#php #wordpress #сериализация
Вопрос:
Итак, у нас возникла эта странная ошибка WP, из-за которой правила перезаписи не выполняются должным образом только в нашей производственной среде. Во время отладки я обнаружил эту интересную проблему, которая, как мне кажется, может быть причиной.
$serialized_value = maybe_serialize( $value, $option );
if ($option == 'rewrite_rules') {
error_log(print_r($serialized_value,true));
}
Отображает что-то отличное от,
$serialized_value = maybe_serialize( $value, $option );
if ($option == 'rewrite_rules') {
print_r($serialized_value);
}
Версия error_log больше и соответствует правильной версии. Print_r меньше, не такой большой и имеет неправильную версию. Вот функция в WP, которая сериализует.
function maybe_serialize( $data, $option ) {
if ( is_array( $data ) || is_object( $data ) ) {
$newdata = serialize( $data );
return $newdata;
}
// Double serialization is required for backward compatibility.
// See https://core.trac.wordpress.org/ticket/12930
// Also the world will end. See WP 3.6.1.
if ( is_serialized( $data, false ) )
return serialize( $data );
return $data;
}
Почему это должно отображать что-то по-другому?
Комментарии:
1. все хорошо. Разобрался. Перезаписи фактически обновлялись 3 раза с 3 разными значениями. Print_r завершал процесс в первый раз, в error_log были все 3, и я пропустил их.