2014-09-21 3 views
0

Я использую плагин Wordpress woocommerce, и я получил список всех заказов, используя класс WC_Order. WC_Order documentationWordpress - Woocommerce - Получить заказы для определенного продукта

Это возвращает простую информацию о заказе, таком как ID, дата и состояние, но мне нужно знать продукт, который купил клиент.

До сих пор мой рабочий код:

$args = array(
    'post_type' => 'shop_order', 
    'post_status' => 'publish', 
    'meta_key' => '_customer_user', 
    'posts_per_page' => '-1' 
); 

$my_query = new WP_Query($args); 
$customer_orders = $my_query->posts; 

$all_order_data = array(); 

foreach ($customer_orders as $customer_order) { 
    $order = new WC_Order(); 
    $order->populate($customer_order); 
    $orderdata = (array) $order; 
    $all_order_data[] = $orderdata; 
} 

Для удобного просмотра выходных данных я его как JSON:

echo json_encode($all_order_data); 

Однако, мне нужно, чтобы иметь возможность просматривать то, что продукт были приобретены с каждым заказом. Я не могу найти способ сделать это, и я не видел ничего в Интернете о достижении этой функциональности. Точно так же, если возможно, получение заказов, прикрепленных к продукту, было бы очень важно для меня.

Кто-нибудь сделал это раньше? Или кто-нибудь может указать мне в правильном направлении?

ответ

0

Вы можете просмотреть элементы в заказе, используя метод get_items() объекта заказа. В моем примере $all_order_data будет массивом всех элементов, которые были приобретены в запрошенных заказах.

$customer_orders = new WP_Query($args); 

$all_order_data = array(); 

while ($customer_orders->have_posts()){ 
    $customer_orders->the_post();) { 
    $order = new WC_Order(); 
    $all_order_data[] = $order->get_items(); 
} 

wp_reset_postdata(); 
0

@helgatheviking был на правильном пути, но ее образец кода не компилируется. Все, что вам нужно сделать, это заменить

$orderdata = (array) $order; 
$all_order_data[] = $orderdata; 

с

$all_order_data[] = $order->get_items(); 

Надеется, что это помогает!

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