Автоматическая отмена заказов

В этом уроке по сути покажу вам, как при помощи небольшого сниппета кода можно изменять статусы заказов с одного на другой через какой-то определённый период времени.

Вы конечно можете вспомнить про опцию «Удержание запаса», которая находится в настройках WooCommerce > Товары > Запасы. Но эта опция немного отличается, кроме того, работает только при включенном «Управлении запасами».

Опция удержания запаса в WooCommerce

Так что мы можем всё сделать сами при помощи всего лишь одного хука woocommerce_order_status_pending и планировщика WP_Cron.

Прежде, чем мы перейдём к коду, хочу порекомендовать вам свой курс по созданию темы с нуля для интернет-магазина на WooCommerce.

add_action( 'woocommerce_order_status_pending', 'true_cancel_failed_orders' );
 
function true_cancel_failed_orders( $order_id ) {
	// вот тут мы планируем новое событие
	wp_schedule_single_event( time() + HOUR_IN_SECONDS, 'true_some_hook123', array( $order_id ) );
}
 
add_action( 'true_some_hook123', 'true_do_cancel_order' );
 
function true_do_cancel_order( $order_id ) {
	// получаем объект заказа
	$order = wc_get_order( $order_id );
	// чекаем статус, если нужный нам, то отменяем
	if( $order->has_status( array( 'pending' ) ) ) { 
		$order->update_status( 'cancelled', 'Заказ автоматом отменён' );
	}
}

Дополнительно обращаю ваше внимание на:

Смотрите также урок про отложенное завершение заказов.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал