使用add_post_meta序列化

时间:2015-02-13 10:57:33

标签: php wordpress serialization metadata

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

我还在前端创建了一个自定义表单,以更新其中的自定义帖子类型。

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

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

a:3:{s:4:"name";s:4:"tony";s:3:"dob";s:10:"11/02/1982";s:10:"occupation";s:6:"driver";}

但是当我使用自定义表单从前端更新自定义帖子类型时,数据库中的meta_value显示为:

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)));
        }
    }

1 个答案:

答案 0 :(得分:4)

取代:

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

使用:

add_post_meta($pid, $k, $v2);

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