WooCommerce序列元值阵列中wp_postmeta表(WooCommerce seriali

2019-09-28 01:14发布

我通过SQL插入项目和属性。 一切工作正常,但我无法弄清楚在wp_postmeta如何_product_attributes

我理解的逻辑,除了S:7: “pa_hrup”< - 我在哪里可以拿到7和s:31: “pa_kapaciteta-rezervoarja-ZA-去”< - 我在哪里得到31 ..

a:2:{s:7:"pa_hrup";a:6:{s:4:"name";s:7:"pa_hrup";s:5:"value";s:0:"";s:8:"position";i:0;s:10:"is_visible";i:1;s:12:"is_variation";i:0;s:11:"is_taxonomy";i:1;}s:31:"pa_kapaciteta-rezervoarja-za-go";a:6:{s:4:"name";s:31:"pa_kapaciteta-rezervoarja-za-go";s:5:"value";s:0:"";s:8:"position";i:1;s:10:"is_visible";i:1;s:12:"is_variation";i:0;s:11:"is_taxonomy";i:1;}}

Answer 1:

它是一种元数据串序列阵列s:31是长度pa_kapaciteta-rezervoarja-za-go在这种情况下。 a:6是为每个阵列(或子阵列)的数量确定的键/值对的项目。

因此,一个seriallized阵列:

  • 总是以a:为阵,再加上项目的键/值对的它的数量和:
  • 然后{用于项目启动
  • 然后s:字符串,以及字符串项(键或值)的lenght :加键或值的字符串。
  • 然后; 以分离每个键或值部件
  • 然后}的项目结束

串行化的阵列 ,可以使用WordPress被解序列化 maybe_unserialize() unserialize()在PHP)。
一个正常的阵列可以利用使用WordPress被序列 maybe_serialize() serialize()在PHP)。

像add_post_meta()或update_post_meta()WordPress的功能将总是保存前序列化阵列meta_valuewp_postmeta表。

对于WooCommerce同样的事情,一些相关WC_Data方法save()的CRUD对象和所有相关的数据存储类。

使用maybe_unserialize()您的序列化的字符串数组会给:

$values = array( 
    'pa_hrup' => array(
        'name'         => 'pa_hrup',
        'value'        => '',
        'position'     => '0',
        'is_visible'   => '1',
        'is_variation' => '0',
        'is_taxonomy'  => '1'
    ),
    'pa_kapaciteta-rezervoarja-za-go' => array(
        'name'         => 'pa_kapaciteta-rezervoarja-za-go',
        'value'        => '',
        'position'     => '1',
        'is_visible'   => '1',
        'is_variation' => '0',
        'is_taxonomy'  => '1'
    )
);


文章来源: WooCommerce serialized meta value array in wp_postmeta table