2016-02-08 26 views
2

嗨,我需要获取所有属于或包含产品的订单。即如果product1是我的产品名称,那么我需要获得包含此产品的循环中的所有订单。 为了获得订单的详细信息我使用下面的查询如何使用产品名称创建Woocoomerce订单查询?

     $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)如何获取属于product1的订单[其中product1是我的产品名称]。

有谁知道,请帮忙。

回答

2

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

<?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/

+0

$ produto_id = 22777;但我使用产品名称,所以我不能使用产品ID查询。 – Ram

+0

请回答第一个问题。 – Ram

相关问题