2017-08-01 136 views
3

隨着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似乎沒有工作。

回答

0

唯一的解釋是,你正在使用的ID不是item_id與類型"line_item" ...

我曾嘗試,它使用正常按預期工作WC_Abstract_Orderget_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 … 
} 

這應該澄清的事情。

作爲參考:How to get WooCommerce order details