2017-02-14 153 views
4

這裏是情況。我有一個用作市場的woocommerce網站。我正在銷售遊戲,因爲有些購買者會收到一個蒸汽鑰匙。爲此,我正在開發一個關鍵歸因系統,因此通過進入一個頁面,關鍵將成爲用戶的屬性。爲此,我想檢查當前用戶(在登錄和頁面上)所做的所有訂單,並檢查他購買的遊戲。從當前用戶訂單獲取訂單ID在WooCommerce中

我在這裏找到了一些非常有用的信息:How to get WooCommerce order details

不過,我不設法讓所有的訂單當前用戶。我首先想要做出一個SQL請求,但是我沒有在訂單和用戶之間找到數據庫上的鏈接。

你有沒有領先?

+3

總是詢問有一些代碼和問題,您的代碼有問題在這裏。 – Vinay

+0

這裏是重點。我有要做的代碼,並且它工作正常。我只是沒有設法擁有那部分。 但我明白了,謝謝 –

回答

8

UpdatedAdded Compatibility with WooCommerce 3+ (January 2018)

這裏,你將需要獲得所有客戶的訂單,並仔細檢查每個客戶訂單的每個項目代碼:

## ==> Define HERE the statuses of that orders 
$order_statuses = array('wc-on-hold', 'wc-processing', 'wc-completed'); 

## ==> Define HERE the customer ID 
$customer_user_id = get_current_user_id(); // current user ID here for example 

// Getting current customer orders 
$customer_orders = wc_get_orders(array(
    'meta_key' => '_customer_user', 
    'meta_value' => $customer_user_id, 
    'post_status' => $order_statuses, 
    'numberposts' => -1 
)); 


// Loop through each customer WC_Order objects 
foreach($customer_orders as $order){ 

    // Order ID (added WooCommerce 3+ compatibility) 
    $order_id = method_exists($order, 'get_id') ? $order->get_id() : $order->id; 

    // Iterating through current orders items 
    foreach($order->get_items() as $item_id => $item){ 

     // The corresponding product ID (Added Compatibility with WC 3+) 
     $product_id = method_exists($item, 'get_product_id') ? $order->get_product_id() : $item['product_id']; 

     // Order Item meta data 
     $item_meta_data = wc_get_order_item_meta($item_id); 

     // TES: Some output 
     echo '<p>Line total for '.wc_get_order_item_meta($item_id, '_line_total', true).'</p><br>'; 
    } 
} 

該代碼測試和工程


相關:

+0

謝謝你。然而,我遇到了這樣一個問題:foreach($ customer_order-> get_item()爲$ item_id => $ item_values) 錯誤是:致命錯誤:調用未定義的方法WP_Post :: get_item() –

+0

I通過替換爲:foreach(wc_get_order($ order_id) - > get_items()作爲$ item_id => $ item_values)來修復該問題。 它似乎在工作,我只需要獲取其他信息,如獲取產品名稱。我應該自己解決。非常感謝! –

+0

我認爲這是在iPhone上同步我的帳戶時發生的錯誤。我從昨天開始沒有使用過Stackoverflow。我意識到Solved這個詞也被刪除了。答案再次被標記爲接受;) –