将Woocommerce从2.6.13更新为3.2.6后,一些自定义代码显示待处理的订单并统计订购的产品不再有效。我无法移植代码,因为我找到的woocommerce文档看起来已经过时了。
例如,我认为这不再有效,但我找不到更新版本
$orders = get_posts( array(
'post_type' => 'shop_order',
'post_status' => array( 'wc-processing', 'wc-completed' )
) );
我从下面的那个更新了它,但是没有返回数组中的任何内容
$orders = get_posts( array(
'post_type' => 'shop_order',
'post_status' => 'publish',
'tax_query' => array( array(
'taxonomy' => 'shop_order_status',
'field' => 'slug',
'terms' => array( 'processing', 'completed' )
) )
) );
在3.0 +中使用woocommerce的get_posts获取订单的正确方法是什么?
答案 0 :(得分:1)
您的第一个代码段在WC 3+中有效,以获取WP_Post
订单对象数组,但您需要以这种方式指定帖子数量:
$post_orders = get_posts( array(
'post_type' => 'shop_order',
'numberposts' => -1, // number of post (all)
'post_status' => array( 'wc-processing', 'wc-completed' )
) );
// Display the number of Post orders objects in the array
echo count($post_orders);
或者您可以使用此SQL查询:
global $wpdb;
$post_orders = $wpdb->get_results( "
SELECT *
FROM {$wpdb->prefix}posts
WHERE post_type LIKE 'shop_order'
AND post_status IN ('wc-processing', 'wc-completed')
" );
// Display the number of WP_Post orders in the array
echo count($post_orders);
要获取WC_Order
个对象的数组,您可以使用:
$orders = wc_get_orders( array(
'numberposts' => -1, // number of post (all)
'post_status' => array( 'wc-processing', 'wc-completed' )
) );
// Display the number of WP_Order orders in the array
echo count($orders);