【问题标题】:serialize with add_post_meta用 add_post_meta 序列化
【发布时间】:2015-04-14 09:39:06
【问题描述】:

我正在使用 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)));
        }
    }

【问题讨论】:

    标签: php wordpress serialization metadata


    【解决方案1】:

    替换:

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

    与:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-26
      • 2015-02-12
      • 2015-01-30
      • 2015-01-29
      • 1970-01-01
      • 2018-07-18
      • 2016-09-25
      • 2011-03-15
      相关资源
      最近更新 更多