您好我需要获得属于或包含A PRODUCT的所有订单。即如果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)如何获取属于product1的订单[其中product1是我的产品名称]。?
有人知道,请帮忙。
答案 0 :(得分: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/