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;
}
这个问题几乎是出于纯粹的好奇心。
如标题所述,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;
}