WordPress — Woocommerce — получать заказы на конкретный продукт

Я использую плагин woocommerce wordpress и получил список всех заказов, используя класс WC_Order. WC_Order документация

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

Пока мой рабочий код:

$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();

Надеюсь это поможет!

0

По вопросам рекламы [email protected]