WooCommerce订单项元数值是否必须是字符串?

时间:2017-07-25 20:05:54

标签: php wordpress woocommerce metadata orders

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

如标题所述,WooCommerce订单商品元数据需要是一个字符串。

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

我知道为了添加新的元数据,您需要使用以下代码中的内容:

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

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

非常感谢任何输入!

1 个答案:

答案 0 :(得分:1)

  

是的它也可以是数组。

如果您查看数据库表中的 '_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;
}