WordPress中如何读写序列化meta_key数据并修改option_rsv_t值
实现方案
你存储的内容是PHP标准的序列化数组结构,不需要额外编写解析逻辑,PHP原生和WordPress内置函数就能直接完成读写操作:
核心操作逻辑
- 读数据:用
unserialize()函数把序列化字符串转为PHP数组,在WordPress场景下调用get_post_meta()时第三个参数传true,会自动完成反序列化,无需手动处理 - 写数据:修改数组后用
serialize()函数转回序列化字符串,WordPress场景下直接把数组传给update_post_meta(),系统会自动序列化存储
完整代码示例(WordPress环境)
// 1. 读取meta值,替换为你实际的文章ID和meta_key名称 $meta_value = get_post_meta( $post_id, '你的目标meta_key', true ); // 2. 校验结构后给option_rsv_t加1 if ( is_array( $meta_value ) && isset( $meta_value[0]['option_rsv_t'] ) ) { $meta_value[0]['option_rsv_t'] = intval( $meta_value[0]['option_rsv_t'] ) + 1; } // 3. 保存修改后的值 update_post_meta( $post_id, '你的目标meta_key', $meta_value );
纯PHP原生环境处理示例
如果你需要单独处理序列化字符串,直接调用原生函数即可:
$raw_serialized_str = 'a:1:{i:0;a:9:{s:13:"option_name_t";s:7:"Spartan";s:14:"option_price_t";s:3:"100";s:12:"option_qty_t";s:2:"16";s:12:"option_rsv_t";s:1:"0";s:20:"option_default_qty_t";s:1:"1";s:17:"option_qty_t_type";s:8:"inputbox";s:20:"option_sale_end_date";s:10:"2021-10-19";s:20:"option_sale_end_time";s:5:"18:00";s:22:"option_sale_end_date_t";s:16:"2021-10-19 18:00";}}'; // 反序列化为数组 $data_arr = unserialize( $raw_serialized_str ); // 修改字段值 $data_arr[0]['option_rsv_t'] = intval( $data_arr[0]['option_rsv_t'] ) + 1; // 转回序列化字符串 $new_serialized_str = serialize( $data_arr );
注意事项
不要手动修改序列化字符串的内容,字符串内存储了每个字段的长度信息,手动修改会导致长度不匹配,反序列化失败。
内容的提问来源于stack exchange,提问作者Miguel G.
相关产品推荐
相关产品推荐

