使用update_Post_Meta将序列化数据插入WordPress Post Meta的正确方法



我正在尝试使用update_post_meta函数将序列化的数据插入到wp_postmeta表中。

但是,当我将数据插入到表中时,它正在被更改。例如,以下是我试图插入的内容:

update_post_meta($feed_id, 'wprss_ftp_taxonomies', 'a:3:{i:0;a:6:{s:8:"taxonomy";s:6:"source";s:5:"terms";a:1:{i:0;s:3:"'.$source_slug.'";}s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:1;a:6:{s:8:"taxonomy";s:5:"topic";s:5:"terms";s:0:"";s:4:"auto";s:4:"true";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:2;a:6:{s:8:"taxonomy";s:10:"categories";s:5:"terms";s:0:"";s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}}');

所以我的序列化数据是这样的:

a:3:{i:0;a:6:{s:8:"taxonomy";s:6:"source";s:5:"terms";a:1:{i:0;s:3:"'.$source_slug.'";}s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:1;a:6:{s:8:"taxonomy";s:5:"topic";s:5:"terms";s:0:"";s:4:"auto";s:4:"true";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:2;a:6:{s:8:"taxonomy";s:10:"categories";s:5:"terms";s:0:"";s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}}

然而,它被插入数据库如下:

s:577:"a:3:{i:0;a:6:{s:8:"taxonomy";s:6:"source";s:5:"terms";a:1:{i:0;s:3:"abc";}s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:1;a:6:{s:8:"taxonomy";s:5:"topic";s:5:"terms";s:0:"";s:4:"auto";s:4:"true";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}i:2;a:6:{s:8:"taxonomy";s:10:"categories";s:5:"terms";s:0:"";s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}}";

它看起来像是将其作为字符串插入,而不仅仅是将值设置为我输入的原始序列化数据。

我不知道如何纠正这一点,因为我不经常直接处理序列化数据。

任何见解都将不胜感激。

您可以"取消序列化";这将正确工作

$data   =    unserialize( 'YOUR_CODE_SERIALIZED_HERE' );
update_post_meta($feed_id, 'wprss_ftp_taxonomies', $data);

不要序列化数组。直接将其作为数组分配给update_post_meta。我刚刚在这里解决了我自己的问题->为什么在我的序列化数组中保存了一个字符串?

最新更新