这不是一个错误。WordPress 有这样做的理由。因为,WordPress 自动序列化对象和数组,它必须区分作为序列化的数据库元值和实际上只是看起来像序列化的字符串的元值。要理解这个注释 update_post_meta() 调用 Maybe_serialize()
function maybe_serialize( $data ) {
if ( is_array( $data ) || is_object( $data ) )
return serialize( $data );
// 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;
}
请注意,如果元值是一个序列化的字符串,那么它会再次被序列化。
update_post_meta() 和 get_post_meta() 自动处理对象和数组的序列化和反序列化。您确定需要在调用 update_post_meta() 时使用序列化值吗?请注意 get_post_meta() 将反序列化序列化的字符串并返回原始字符串。