检查Woocommerce 3中最近未完成的订单的状态

时间:2018-06-28 17:47:52

标签: php wordpress woocommerce shipping orders

如果有经验,请告诉我如何做,或告诉行动方向正确的行动。

  1. 对于CRON,有必要检查外部交付服务中的状态(但没关系)。
  2. 获得未完成的订单,或者交替获得一份未完成的订单。

示例: 我们有3-5个未完成的订单(过去24小时)。 我创建了一些功能来检查未完成订单的状态。 获取第一笔订单,检查状态,如果外部服务状态已更改,那么我将在商店中对其进行更改。操作已完成。

要检查的状态:请稍候,正在处理。

对第2段感兴趣。

我在这里找到了一个论点,也许合适:

// Get refunds in the last 24 hours.
$args = array(
    'type' => 'shop_order_refund',
    'date_created' => '>' . ( time() - DAY_IN_SECONDS ),
);
$orders = wc_get_orders( $args );

1 个答案:

答案 0 :(得分:1)

更新2 (在创建日期后的24小时内检查订单)

您可以使用实用程序函数中嵌入的该非常简单的SQL查询,该查询将在订单创建日期后的24小时内获取状态为“保留”和“处理中”的所有订单ID:

function get_order_ids_to_check(){
    global $wpdb;

    return $wpdb->get_col( "
        SELECT p.ID
        FROM {$wpdb->prefix}posts as p
        WHERE p.post_type LIKE 'shop_order'
        AND p.post_status IN ('wc-on-hold','wc-processing')
        AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - 86400)
    " );
}

代码进入活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。


用法-您可以在任何地方使用它,例如此伪代码示例中的另一个功能:

// Get the Orders IDs to check
$orders_ids = get_order_ids_to_check();

// Loop through each order Ids
foreach( $orders_ids as $order_id ){
    // Get the delivery order ID related to your external shipping service
    $delivery_order_id = get_post_meta( $order_id, 'delivery_order_id', true );
}