You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP:Wordpress存储序列化数组时如何移除外层字符串计数

问题原因

WordPress 内置的 update_post_meta() 方法默认会对传入的数组、对象类型数据自动执行序列化操作,你提前手动调用 serialize() 处理数组后,传给函数的是序列化后的字符串,函数会对这个字符串再次序列化,就出现了你看到的外层多了 s:xxx:"..." 的结构。

解决方法

新数据存储正确写法

直接把未序列化的原始数组传入 update_post_meta() 即可,不需要手动做序列化处理:

// $your_json_array 是你原本要序列化的原始PHP数组
update_post_meta($post_id, '你的自定义字段键名', $your_json_array);

对应的读取数据时直接调用 get_post_meta() 即可拿到原始数组,不需要手动反序列化:

$your_array = get_post_meta($post_id, '你的自定义字段键名', true);

已存储错误数据的修复

如果已经有大量数据按错误方式存入库中,可以通过两次反序列化拿到正确内容:

// 先取出被二次序列化的内容
$wrong_data = get_post_meta($post_id, '你的自定义字段键名', true);
// 第一次反序列化拿到你最初手动序列化的字符串,第二次反序列化拿到原始数组
$correct_array = unserialize(unserialize($wrong_data));
// 也可以重新按正确方式存回数据库
update_post_meta($post_id, '你的自定义字段键名', $correct_array);

内容的提问来源于stack exchange,提问作者Eric Brockman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:57:02