【问题标题】:How to use WordPress update_post_meta with JSON string?如何使用带有 JSON 字符串的 WordPress update_post_meta?
【发布时间】:2014-04-19 16:14:18
【问题描述】:

我有这个 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 字符串的任何帮助?将不胜感激

【问题讨论】:

    标签: php mysql json wordpress woocommerce


    【解决方案1】:

    您在数据库中看到的是一个序列化数组。后元函数会为您处理所有这些。

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

    您不需要使用序列化/反序列化函数。

    【讨论】:

    • 它为什么会这样做真的没有道理,但它似乎仍然有效。其实这是一个很好的功能,一旦你知道它。非常感谢
    【解决方案2】:

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

    希望对您有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多