Woocommerce get_item()函数返回false
问题描述:
随着WooCommerce 3+引入新的API来获取订单及其细节,许多事情都发生了变化,很多事情也都被破坏了。Woocommerce get_item()函数返回false
考虑我的插件以下代码:
$order = wc_get_order($order_id);
$id= 27;
var_dump($order->get_item($id));
这给了我布尔(假)。我检查了数据库和订单,并且该项目确实存在。
而且
var_dump($order)
并与所有项目返回整个订单对象。
所以基本上只有功能get_item
似乎没有工作。
答
唯一的解释是,你正在使用的ID不是
item_id
与类型"line_item"
...
我曾尝试,它使用正常按预期工作WC_Abstract_Order
get_item()
方法item_id
是“line_item”类型。
要获得并检查从定义的订单ID正确"line_item"
项目的ID,请尝试:
// define an exiting order ID first
$order_id = 422;
$order = wc_get_order($order_id);
foreach($order->get_items() as $item_id => $item_values){
$item_ids_array[] = $item_id;
}
var_dump($item_ids_array); // will output all item IDs (of type "line_item") for this order
## ==> Then now you can try (to check get_item() method):
foreach($item_ids_array as $item_id){
var_dump($order->get_item($item_id)); // Will output each WC_Order_Item_Product Object …
}
这应该澄清的事情。