Как получить все покупки(order) по продукту в woocommerce?
Решено
Здравствуйте, мне нужно получить все покупки и данные о них, которые были по определенному продукту. Через стандартный wp_query не получается так сделать, потому что я не знаю откуда в ордерах можно получить по какому продукту была произведена оплата. скажите как можно получить информацию о покупках по определенному продукту?
1 Ответ(ы)
Ответ
Можно сделать произвольный запрос, который вернет нам массив содержащий id ордеров которые были по продукту:
global $wpdb; $order_ids = $wpdb->get_col($wpdb->prepare(" SELECT order_id FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id IN ( SELECT order_item_id FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE meta_key = '_product_id' AND meta_value = %d ) AND order_item_type = 'line_item' ", $id_product));
$id_product — id продукта
теперь имея массив с ордерами мы можем их вывести через wp_query:
if (!empty($order_ids)) { // задаем нужные нам критерии выборки данных из БД $args = array( 'posts_per_page' => -1, 'post_type' => 'shop_order', 'post_status' => 'wc-completed', 'post__in' => $order_ids ); $query = new WP_Query($args); // Цикл if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); // тут ваш код } } else { // Постов не найдено } /* Возвращаем оригинальные данные поста. Сбрасываем $post. */ wp_reset_postdata(); }