2017-02-14 142 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这个词也被删除了。答案再次被标记为接受;) –

相关问题