В этом уроке по сути покажу вам, как при помощи небольшого сниппета кода можно изменять статусы заказов с одного на другой через какой-то определённый период времени.
Вы конечно можете вспомнить про опцию «Удержание запаса», которая находится в настройках 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', 'Заказ автоматом отменён' ); } }
Дополнительно обращаю ваше внимание на:
HOUR_IN_SECONDS
, больше о них вы можете почитать здесь.$order->update_status()
.Смотрите также урок про отложенное завершение заказов.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.