我使用WordPress update_post_meta保存像布爾和整型是系列化
$obj = array(
'array' => array(1, 'zwei', !!3),
'string' => 'abc',
'bool' => true,
'bool2' => false,
'integer' => 1,
'integer2' => 17
);
update_post_meta($post_ID, 'my-key', $obj);
然而
一個數組,如果我檢查了原料場後弦,我得到
a:6:{s:5:"array";a:3:{i:0;i:1;i:1;s:4:"zwei";i:2;s:1:"1";}s:6:"string";s:3:"abc";s:4:"bool";s:1:"1";s:5:"bool2";s:1:"0";s:7:"integer";i:1;s:8:"integer2";i:17;}
,而應該是
a:6:{s:5:"array";a:3:{i:0;i:1;i:1;s:4:"zwei";i:2;b:1;}s:6:"string";s:3:"abc";s:4:"bool";b:1;s:5:"bool2";b:0;s:7:"integer";i:1;s:8:"integer2";i:17;}
您可能會注意到所有的布爾值都被存儲爲字符串(b:1 = s:1:"1"
)
問題是,僅在特定的WordPress安裝,而不是每一個人。我也查了serialize功能這是工作的正確(返回b:1
)
而且使用get_post_meta
get_post_meta($post_ID, 'my-key', true);
,並簽有is_bool返回false(顯然)
編輯值:剛也注意整數得到保存爲字符串
是否有任何'sanitize_meta'過濾器,可能來自某些插件,正在應用於發生這種情況的安裝?在代碼庫中搜索'add_filter('sanitize_' – Tom
你使用的是什麼版本的wordpress?你可以更新wp,然後再次檢查嗎?我已經安裝了一個wp 3.5.2,問題出現在我更新到3.6之後.1問題已修復 –
WordPress> = 3.6使用[wp_unslash](http://core.trac.wordpress.org/browser/tags/3.6.1/wp-includes/meta.php#L119),而3.5.2仍然使用[stripslashes_deep](http://core.trac.wordpress.org/browser/tags/3.5.2/wp-includes/meta.php#L119) – Xaver