使用Woocommerce 2.6.8,我无法获得文档和here on SO中描述的订单项目数据信息。
我只想得到行项目的价格和数量,这应该很简单:
$order = new WC_Order( $order_id );
$order_items = $order->get_items();
foreach ($order_items as $items_key => $items_value) {
echo $items_value['name']; //this works
echo $items_value['qty']; //this doesn't work
echo $items_value[item_meta][_qty][0]; //also doesn't work
echo $items_value['line_total']; //this doesn't work
}
字符串
仔细观察返回的内容
Array
(
[1] => Array
(
[name] => Sample Product 1
[type] => line_item
[item_meta] =>
[item_meta_array] => Array
(
[1] => stdClass Object
(
[key] => _qty
[value] => 1
)
[2] => stdClass Object
(
[key] => _tax_class
[value] =>
)
[3] => stdClass Object
(
[key] => _product_id
[value] => 8
)
[4] => stdClass Object
(
[key] => _variation_id
[value] => 0
)
[5] => stdClass Object
(
[key] => _line_subtotal
[value] => 50
)
[6] => stdClass Object
(
[key] => _line_total
[value] => 50
)
[7] => stdClass Object
(
[key] => _line_subtotal_tax
[value] => 0
)
[8] => stdClass Object
(
[key] => _line_tax
[value] => 0
)
[9] => stdClass Object
(
[key] => _line_tax_data
[value] => a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}
)
)
)
)
型
这都是使用文档化的Woocommerce方法,为什么我需要的信息存储在这个item_meta_array
中?
有谁知道我怎么才能得到这些信息吗?
最好使用文档化的方法,而不是通过item_meta_array
循环直到找到我要找的密钥的粗糙技巧。
我觉得我肯定漏掉了什么明显的东西。
3条答案
按热度按时间wvmv3b1j1#
**更新 (对于WooCommerce 3+)
现在对于代码,你可以使用
WC_Order_Item_Product
(和WC_Product
)方法,比如:字符串
**更新:**以下所有
WC_Abstract_Order
methods也允许通过各种有趣的选项获取订单项目数据,例如:型
WC_Data
methods也可以用于获取订单项数据作为未受保护的数组,或者从特定的元键获取特定的嵌套或自定义Meta数据值:型
这段代码是测试和工作.
方法
get_item_meta()
已被弃用,并已被wc_get_order_item_meta
取代,它不再是一个方法**,而是一个带有一些参数的函数**:woocommerce的早期版本(从2.4到2.6.x)
您可以使用**
get_item_meta()
**WC_Abstract_order方法,获取订单元数据(物料数量和物料价格合计)。所以你的代码将是:
型
这段代码是经过测试的,功能齐全.
参考:类WC_Abstract_Order方法
wmtdaxz32#
项目价格可以从
order
对象通过下面的代码获得字符串
iibxawm43#
请参阅此文档中的订单类woocommerce行项目。在这里
您可以调用total来获取订单总成本。如果您想通过获取product_id来获取单件成本,
字符串
或者你可以这样做。
型
这得到的产品价格今天,不是价格时作出的订单.所以,如果一个订单是与单价10,然后单价是改变你会得到新的价格.该订单仍然有旧的“原始”订单价格..