Php 用add_post_meta序列化

Php 用add_post_meta序列化,php,wordpress,serialization,metadata,Php,Wordpress,Serialization,Metadata,我正在使用cmb2插件为自定义帖子类型创建分组自定义元框。那边的一切都很好 我还在前端创建了一个自定义表单来更新整个自定义帖子类型 我遇到的问题是,我的分组自定义元框没有得到更新 如果在从管理区域更新自定义帖子类型后检查数据库,则数据库中的meta_值显示为: a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";} s:87:"a:3:{s:4:"name";s:4:"ton

我正在使用cmb2插件为自定义帖子类型创建分组自定义元框。那边的一切都很好

我还在前端创建了一个自定义表单来更新整个自定义帖子类型

我遇到的问题是,我的分组自定义元框没有得到更新

如果在从管理区域更新自定义帖子类型后检查数据库,则数据库中的meta_值显示为:

a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";}
s:87:"a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";}";
但是,当我使用自定义表单从前端更新自定义帖子类型时,数据库中的meta_值显示为:

a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";}
s:87:"a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";}";
出于某种原因,开始时的数据位:

s:87:"
当我序列化数据数组时添加,并导致我的数据不显示在编辑后屏幕的管理区域中

以下是我用于从前端更新自定义帖子类型的代码:

$current_user = wp_get_current_user();
$pid = get_page_by_title( $current_user->user_email,'OBJECT','application');

$post = array(
            'ID'    => $pid->ID,
            'post_title'    => $current_user->user_email,
            'post_status'   => 'pending',
            'post_type'     => 'application',
            'author'        => $current_user->ID
        );
        $pid = wp_update_post($post);
    }

    foreach($_POST as $k => $v){
        if(is_array($v)){
            delete_post_meta($pid, $k);
            foreach($v as $k2 => $v2){
                add_post_meta($pid, $k, serialize($v2));
            }
        }else{
            update_post_meta($pid, $k, esc_attr(strip_tags($v)));
        }
    }
替换:

add_post_meta($pid, $k, serialize($v2));
与:

我发现add_post_元函数已经序列化了数据,因此我不需要使用serialize()再次序列化数据。

替换:

add_post_meta($pid, $k, serialize($v2));
与:

我发现add_post_元函数已经序列化了数据,因此我不需要使用serialize()再次序列化数据