在wp_postmeta中将自定义字段数据保存为正确的序列化数组格式

时间:2016-09-02 07:15:55

标签: php wordpress serialization woocommerce product

我正在使用woocommerce处理wordpress并使用WCK plugin作为自定义字段。我以编程方式创建产品。

我需要将自定义字段数据保存为数据库中的数组。但它没有正确保存,也没有在产品的后端显示自定义字段值。我正在使用此代码。

 $data= array(
    'alternative-product-names' => $alternative_pname,
    'manufacturers-part-number' => $manufature_park_number,
    'currently-packaged'=> $currently_packaged,
    'other-package-options' => $other_pkg_opt,
    'inner-pack-qty' => $inner_pack_qty,
    'inner-pack-dimensions' => $inner_pck_dimension,
    'packaging-picture'=>''
    );

update_post_meta( $post_id, 'productextrainfo1234', $data );

我需要以这种格式保存数据:

  

一个:1:{I:0;一个:15:{S:25:"可替代产品,名称&#34 ;; S:4:" fgfg&#34 ;; S:25 :"制造商 - 部分 - 数&#34 ;; S:4:" gffg&#34 ;; S:18:"目前包装&#34 ;; S:4:" fgfg&#34 ;; S:21:"其他封装选项&#34 ;; S:4:" fgfg&#34 ;; S:14:"内包-数量&#34 ;; S:4:" fggf&#34 ;; S:21:"内包维度&#34 ;; S:17:"包装图象&#34 ;; S:3 :" 561&#34 ;;}}

1 个答案:

答案 0 :(得分:4)

测试代码后:

  

首先,由于数组中有 7行键/值,因此序列化字符串不能以a:1:{i:0;a:15:{ … 开头,而是 a:1:{i:0;a:7:{ …

     

其次,您需要将数组嵌入到一个空数组中,以获得您想要的正确格式:
   的 a:1:{i:0;a:7:{ … }}; 即可。

所以你的代码必须是这样的:

$data= array( 
    array(
        'alternative-product-names' => $alternative_pname,
        'manufacturers-part-number' => $manufature_park_number,
        'currently-packaged'        => $currently_packaged,
        'other-package-options'     => $other_pkg_opt,
        'inner-pack-qty'            => $inner_pack_qty,
        'inner-pack-dimensions'     => $inner_pck_dimension,
        'packaging-picture'         => ''
    )
);

update_post_meta( $product_id, 'productextrainfo1234', $data );

这样,您将在数据库中获得此​​序列化数据值:

  

一个:1:{I:0;一个:7:{S:25:"可替代产品,名称&#34 ;; N; S:25:"制造商 - 部分 - 数&# 34 ;; N; S:18:"目前包装&#34 ;; N; S:21:"其他封装选项&#34 ;; N; S:14:"内-pack-数量&#34 ;; N; S:21:"内包维度&#34 ;; N; S:17:"包装图象&#34 ;; S:0:&# 34;&#34 ;;}}

而不是:

  

一个:7:{S:25:&#34;可替代产品,名称&#34 ;; N; S:25:&#34;制造商 - 部分 - 数&#34 ;; N; S:18: &#34;目前包装&#34 ;; N; S:21:&#34;其他封装选项&#34 ;; N; S:14:&#34;内包-数量&#34 ;;ñ ; S:21:&#34;内包维度&#34 ;; N; S:17:&#34;包装图象&#34 ;; S:0:&#34;&#34 ;;} < / p>