我嘗試從其中一個訂單項ID獲取相關訂單(訂單ID)。例如Woocommerce從item_id的其中一個獲取order_id?
一種情況: 當編輯命令和刪除訂單項(Ajax的完成)的Woocommerce只提供鉤"woocommerce_before_delete_order_item"
和僅通過$item_id
。 (woo函數執行sql而不是WP環境)。我需要「歸屬」的訂單ID做出一些行動!
到目前爲止,我的解決方案是遍歷所有訂單並比較項目ID,以及匹配發生時的中斷和退貨訂單ID。
當在當前店鋪中保持10000個訂單以及更多活動時,這是減慢或「笨重笨拙」的方式。
這不起作用:
wp_get_post_parent_id ($item_id)
但是我希望有一個類似的呼籲,或者我需要做一個DB SQL
搜索?任何涉及mySQL
的回答,請使其「複製並粘貼就緒」。我很擅長PHP,但不處理或從不寫我自己的SQL。
感謝您的幫助!下面是我的解決方案至今:
$order_id = my_wc_get_order_from_item_id($item_id);
function my_wc_get_order_from_item_id($id) {
$orders = get_posts('post_type=shop_order&numberposts=-1&post_status=publish');
foreach($orders as $obj) {
$order = new WC_Order($obj->ID);
if (count($order->get_items('line_item')) > 0) {
foreach($order->get_items('line_item') as $item_id => $item) {
if($item_id == $id) $return_value = $obj->ID;
if(isset($return_value)) break;
}
}
unset($order);
if(isset($return_value)) break;
}
if(isset($return_value)) return $return_value;
else return 0;
}
優:https://docs.woothemes.com/wc-apidocs/source-class-WC_Abstract_Order.html#1239 – LoicTheAztec
謝謝!什麼是鏈接?行號指向「line_tax」,這似乎與此問題/答案無關。 – helgatheviking
顯然,它們在WC API DOCS上的行號有問題。因爲如果你看我的網址是指向1239行,但它顯示行1277 ...行1239是非常類似於你的代碼,並與get_items()函數 – LoicTheAztec