WooCommerce serialized meta value array in wp_postmeta table

前端 未结 1 1870
梦谈多话
梦谈多话 2020-12-22 01:42

I am inserting items and attributes via SQL. Everything works fine, but i cannot figure it out how the _product_attributes in wp_postmeta

I understand the logic, ex

相关标签:
1条回答
  • 2020-12-22 02:31

    It is a meta data string serialized array and s:31 is the length of pa_kapaciteta-rezervoarja-za-go in this case. a:6 is the number ok key/value pairs items for each array (or sub array).

    So a seriallized array:

    • always start with a: for array, plus the number of items key/value pairs in it and :.
    • then { for items start
    • then s: for string, plus the lenght of the string item (key or value) and :, plus the key or value string.
    • then ; to separate each key or value component
    • then } for items end

    Serialized arrays, can be unserialized using WordPress maybe_unserialize() (or unserialize() in PHP).
    A normal array can be serialized using using WordPress maybe_serialize() (or serialize() in PHP).

    Wordpress functions like add_post_meta() or update_post_meta() will always serialize an arrays before saving a meta_value in wp_postmeta table.

    Same thing for WooCommerce with some related WC_Data method as save() on CRUD Objects and all related data stores classes.

    using maybe_unserialize() on your serialized string array will give:

    $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'
        )
    );
    
    0 讨论(0)
提交回复
热议问题