如何使用产品名称创建 Woocoomerce 订单查询


嗨,我需要获取属于或包含产品的所有订单。

即,如果 product1 是我的产品名称,那么我需要在循环中获取包含此产品的所有订单。为了获取订单详细信息,我使用以下查询

                      $args = array(
                    'post_type'         => 'shop_order',
                    'post_status'       => 'publish'
                         );
          $loop=new WP_Query($args); 
         while($loop->have_posts()): $loop->the_post(); 
         $order_id=get_the_ID();
         $order = new WC_Order($order_id);
        ..details i fetched from query ..

            endwhile ;

要获取项目详细信息,我可以使用$order->get_items();我想

(1)这是在循环中获取订单详细信息的最佳方法吗?

(2)如何获取属于产品1的订单[其中产品1是我的产品名称]?

有谁知道,请帮忙。

对于第一个问题,是的,你真的需要考虑一下,对于第二个问题,你可以使用以下方法,

<?php
  global $wpdb;   
  $produto_id = 22777; // ID do produto
  $consulta = "SELECT order_id FROM {$wpdb->prefix}woocommerce_order_itemmeta woim 
   LEFT JOIN {$wpdb->prefix}woocommerce_order_items oi 
    ON woim.order_item_id = oi.order_item_id 
    WHERE meta_key = '_product_id' AND meta_value = %d
    GROUP BY order_id;";
  $order_ids = $wpdb->get_col( $wpdb->prepare( $consulta, $produto_id ) );
  if( $order_ids ) {
             $args = array(
            'post_type'       =>'shop_order',
            'post__in'   => $order_ids,
            'post_status'    => 'publish',
            'posts_per_page' =>  20,
            'order'          => 'DESC',             
            'tax_query' => array( 
            array( 'taxonomy' => 'shop_order_status',
                   'field' => 'slug',
                   'terms' => array ('Pending' , 'Failed' , 'Processing' , 'Completed', 'On-Hold' , 'Cancelled' , 'Refunded')
                  ) 
                )           
            );
            $orders = new WP_Query( $args );
            }
?> 

有关更多信息,请参阅 http://zjstech.com/basic-woocommerce-mysql-queries-for-orders-products-and-categories/

最新更新