WooCommerce 3+上管理员后端发布的挂单问题摘要

时间:2018-01-20 01:22:26

标签: php wordpress woocommerce posts orders

将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获取订单的正确方法是什么?

1 个答案:

答案 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);