首页 > 解决方案 > x 天后自动取消失败的 Woocommerce 订单

问题描述

我想在 X 天后自动取消所有 woocommerce 订单。我想使用 cron 作业进行设置。这样它就可以在按照我的 cron 计划设置的 X 天后自动取消。

这是我的代码。但它不起作用。任何帮助表示赞赏。

add_action('woocommerce_order_status_changed','status_changed_cancelled');
   function status_changed_cancelled( $order_id, $checkout = null ) {
       global $woocommerce;
       $order = new WC_Order( $order_id );
       if($order->get_status() == 'wc-failed'){

           //assign statu to that order
           $order->status = 'wc-cancelled';
        }
   }

标签: wordpresswoocommerceautomation

解决方案


更新:我能够成功取消失败的订单。取消失败订单的主要原因是恢复库存。

add_action( 'woocommerce_cancel_unpaid_submitted', 'cancel_failed_orders' );
function cancel_failed_orders() {
    $days_delay = 1; // <=== SET the delay (number of days to wait before cancelation)
    $one_day    = 24 * 60 * 60;
    $today      = strtotime( date('Y-m-d') );
    // Get failed orders (1 days old here)
    $failed_orders = (array) wc_get_orders( array(
        'limit'        => -1,
        'status'       => 'wc-failed',
        'date_created' => '<' . ( $today - ($days_delay * $one_day) ),
    ) );
    if ( sizeof($failed_orders) > 0 ) {
        $cancelled_text = __("The order was auto cancelled since it has been in failed state for 24 hours", "woocommerce");
        // Loop through orders
        foreach ( $failed_orders as $order ) {
            $order->update_status( 'wc-cancelled', $cancelled_text );
        }
    }
}

推荐阅读