Complete Processing Orders After a Set Number of Days
Marks processing orders as completed automatically a number of days after purchase, for stores where you do not update orders when they are delivered.
Opens WPIDE on
Code
$wpide_complete_after_days = 10; // Days after the order date.
add_action( 'init', function () {
if ( ! wp_next_scheduled( 'wpide_auto_complete_orders' ) ) {
wp_schedule_event( time() + HOUR_IN_SECONDS, 'daily', 'wpide_auto_complete_orders' );
}
} );
add_action( 'wpide_auto_complete_orders', function () use ( $wpide_complete_after_days ) {
if ( ! function_exists( 'wc_get_orders' ) ) {
return;
}
$orders = wc_get_orders( array(
'status' => 'processing',
'date_created' => '<' . ( time() - $wpide_complete_after_days * DAY_IN_SECONDS ),
'limit' => 50,
) );
foreach ( $orders as $order ) {
$order->update_status( 'completed', sprintf( 'Completed automatically %d days after purchase.', $wpide_complete_after_days ) );
}
} );
Notes
Runs daily through WP-Cron, 50 orders per run, and customers get the "Order completed" email if it is enabled.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.