WooCommerce Order Item Meta 值是否需要为字符串?

Does WooCommerce Order Item Meta value need to be a string?

这个问题几乎是出于纯粹的好奇心。

如标​​题所述,WooCommerce 订单项元是否需要为字符串。

假设地说,您可以拥有作为数组的元数据吗?
如果是这样,您是否需要以不同的方式处理事情?

我知道要添加新的元数据,您需要使用类似于以下代码的内容:

wc_add_order_item_meta($item_id, 'myMetaName', 'John Doe', true);

但是,我想知道是否可以让您的元数据具有不同的数据类型。

非常感谢任何意见!

Yes it can be also an array.

如果您查看数据库 table 的 '_line_tax_data' meta_key,您总是会得到序列化数组 meta_value 像这样:

a:2:{s:5:"total";a:1:{i:2;s:4:"1.92";}s:8:"subtotal";a:1:{i:2;s:3:"2.4";}}

这就是您在源代码中得到的:

/**
 * WooCommerce Order Item Meta API - Add term meta.
 *
 * @access public
 * @param mixed $item_id
 * @param mixed $meta_key
 * @param mixed $meta_value
 * @param bool $unique (default: false)
 * @return int New row ID or 0
 */
function wc_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique = false ) {
    $data_store = WC_Data_Store::load( 'order-item' );
    if ( $meta_id = $data_store->add_metadata( $item_id, $meta_key, $meta_value, $unique ) ) {
        $cache_key = WC_Cache_Helper::get_cache_prefix( 'order-items' ) . 'object_meta_' . $item_id;
        wp_cache_delete( $cache_key, 'order-items' );
        return $meta_id;
    }
    return 0;
}