【问题标题】:Saving custom fields data as right serialized array format in wp_postmeta在 wp_postmeta 中将自定义字段数据保存为正确的序列化数组格式
【发布时间】:2017-01-10 05:13:16
【问题描述】:

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

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

a:1:{i:0;a:15:{s:25:"alternative-product-names";s:4:"fgfg";s:25:"manufacturers-part-number";s :4:"gffg";s:18:"当前打包的";s:4:"fgfg";s:21:"其他包选项";s:4:"fgfg";s:14:"内包装数量";s:4:"fggf";s:21:"内包装尺寸";s:17:"包装图片";s:3:"561";}}

【问题讨论】:

    标签: php wordpress serialization woocommerce product


    【解决方案1】:

    测试您的代码后:

    首先,由于您的数组中有 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 );
    

    这样你就可以在你的数据库中得到这个序列化的数据值了:

    a:1:{i:0;a:7:{s:25:"alternative-product-names";N;s:25:"manufacturers-part-number";N;s:18:"当前包装";N;s:21:"其他包装选项";N;s:14:"内包装数量";N;s:21:"内包装尺寸";N;s :17:"包装图片";s:0:"";}}

    代替:

    a:7:{s:25:"alternative-product-names";N;s:25:"manufacturers-part-number";N;s:18:"current-packaged";N;s: 21:"其他包装选项";N;s:14:"内包装数量";N;s:21:"内包装尺寸";N;s:17:"包装图片"; s:0:"";}

    【讨论】:

    • 非常感谢。您节省了我很多时间。
    • 我在保存产品属性时遇到了同样的问题。你能帮忙吗?
    • 您可能会问另一个类似的问题,提供您正在使用的代码和所需的输出格式……我只能帮助解决分隔大小写问题。因此,您提供的信息越多,帮助越好……
    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多