这是情况。我有一个用作市场的WooCommerce网站。我正在销售游戏,因为某些购买者会收到蒸汽钥匙。为此,我正在处理关键归因系统,因此,通过进入页面,密钥将属于用户。
为此,我想检查当前用户(ON登录和页面上)下的所有订单,并检查他购买的游戏。
我在这里找到一些非常有用的信息:如何获取WooCommerce订单详细信息
但是,我没有设法获得当前用户的所有订单。我首先考虑提出SQL请求,但是我在订单和用户之间的数据库上找不到链接。
您有铅吗?
更新 添加了与WooCommerce 3 (2018年1月)
的兼容性
这是您需要获取所有客户订单并浏览每个客户订单的每个项目的代码:
## ==> 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' ) ? $item->get_product_id() : $item['product_id'];
// Order Item data (unprotected on Woocommerce 3)
if( method_exists( $item, 'get_data' ) ) {
$item_data = $item->get_data();
$subtotal = $item_data['subtotal'];
} else {
$subtotal = wc_get_order_item_meta( $item_id, '_line_subtotal', true );
}
// TEST: Some output
echo '<p>Subtotal: '.$subtotal.'</p><br>';
// Get a specific meta data
$item_color = method_exists( $item, 'get_meta' ) ? $item->get_meta('pa_color') : wc_get_order_item_meta( $item_id, 'pa_color', true );
// TEST: Some output
echo '<p>Color: '.$item_color.'</p><br>';
}
}
此代码已测试并起作用
相关:
- 如何获取WooCommerce订单详细信息
- 访问订单项目在WooCommerce中受保护的数据3
- 获取订单项目和WC_Order_item_product在WooCommerce中3