fix ensure cancelling unpaid orders is always re-scheduled
This commit is contained in:
parent
2bc34aac53
commit
6872321067
|
@ -915,6 +915,12 @@ add_action( 'woocommerce_order_status_cancelled', 'wc_update_coupon_usage_counts
|
|||
function wc_cancel_unpaid_orders() {
|
||||
$held_duration = get_option( 'woocommerce_hold_stock_minutes' );
|
||||
|
||||
// re-schedule the event before cancelling orders
|
||||
// this way in case of a DB timeout or (plugin) crash the event is always scheduled for retry
|
||||
wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
|
||||
$cancel_unpaid_interval = apply_filters( 'woocommerce_cancel_unpaid_orders_interval_minutes', absint( $held_duration ) );
|
||||
wp_schedule_single_event( time() + ( absint( $cancel_unpaid_interval ) * 60 ), 'woocommerce_cancel_unpaid_orders' );
|
||||
|
||||
if ( $held_duration < 1 || 'yes' !== get_option( 'woocommerce_manage_stock' ) ) {
|
||||
return;
|
||||
}
|
||||
|
@ -931,9 +937,6 @@ function wc_cancel_unpaid_orders() {
|
|||
}
|
||||
}
|
||||
}
|
||||
wp_clear_scheduled_hook( 'woocommerce_cancel_unpaid_orders' );
|
||||
$cancel_unpaid_interval = apply_filters( 'woocommerce_cancel_unpaid_orders_interval_minutes', absint( $held_duration ) );
|
||||
wp_schedule_single_event( time() + ( absint( $cancel_unpaid_interval ) * 60 ), 'woocommerce_cancel_unpaid_orders' );
|
||||
}
|
||||
add_action( 'woocommerce_cancel_unpaid_orders', 'wc_cancel_unpaid_orders' );
|
||||
|
||||
|
|
Loading…
Reference in New Issue