Я использую плагин 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);
Однако мне нужно иметь возможность просматривать, какие товары были приобретены с каждым заказом. Я не могу найти способ сделать это, и я не видел ничего в Интернете о достижении этой функциональности. Точно так же, если это возможно, получение заказов, связанных с продуктом, было бы очень важно и для меня.
Кто-нибудь делал это раньше? Или кто-нибудь может указать мне правильное направление?
Вы можете просмотреть элементы в заказе, используя 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();
@helgatheviking был на правильном пути, но ее пример кода не компилируется. Все, что вам нужно сделать, это заменить
$orderdata = (array) $order;
$all_order_data[] = $orderdata;
с
$all_order_data[] = $order->get_items();
Надеюсь это поможет!