如何使用WordPress update_post_meta与JSON字符串?

时间:2014-03-14 11:33:24

标签: php mysql json wordpress woocommerce

我有这个WooCommerce商店,我必须与外部库存系统集成。因此,我需要通过PHP / WordPress创建/更新产品。这部分我已经想通了。 问题是产品的变化。它们作为JSON字符串存储在数据库中。

示例:

a:1:{s:10:"size";a:6:{s:4:"name";s:10:"Size";s:5:"value";s:17:"42";s:8:"position";s:1:"0";s:10:"is_visible";i:1;s:12:"is_variation";i:1;s:11:"is_taxonomy";i:0;}}

然而,当我像这样插入

update_post_meta($product_id, '_product_attributes', 'a:1:{s:10:"size....');

它添加了s:173:" a:1:{s:10:"siz.... ";

我尝试过使用json_encode()删除" s:173"但在开头和结尾都保留双引号。

有关如何在没有其他内容的情况下存储此JSON字符串的任何帮助?非常感谢

2 个答案:

答案 0 :(得分:4)

您在数据库中看到的是序列化数组。 post meta函数可以为您处理所有这些。

使用get_post_meta获取数组,只需将数组传递给update_post_meta。

您不需要使用序列化/反序列化功能。

答案 1 :(得分:1)

我在woocommerce插件中找到了一些代码,

您可以这样做: -

$attributes['size'] = array(
    'name'          => "Size",
    'value'         => "42",
    'position'      => "0",
    'is_visible'    => 1,
    'is_variation'  => 1,
    'is_taxonomy'   => 0
);

update_post_meta( $post_id, '_product_attributes', $attributes );

希望这能帮到你......