2017-02-14 17 views
4

Вот ситуация. У меня есть сайт woocommerce, используемый в качестве рынка. Я продаю игры на нем, потому что некоторые покупатели получают паровой ключ. Для этого я работаю над ключевой системой атрибуции, поэтому, перейдя на страницу, ключ будет атрибутом для пользователя.Получить идентификатор заказа из текущих пользовательских заказов В 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 также было удалено из названия. Ответ отмечен снова как принятие;) –

 Смежные вопросы

  • Нет связанных вопросов^_^