В одном из предыдущих уроков я показывал вам, как при оформлении заказа автоматически присваивать им статус «Выполнен» вместо статуса «Обработка». В этот раз я хочу немного усовершенствовать код и присваивать статусы не сразу, а через некоторое время, через WP_Cron.
Также у меня на сайте есть видеокурс по WooCommerce, рекомендую, вот ссылка.
Ниже – готовый код, который вы можете вставить в functions.php
ващей текущей (лучше дочерней) темы либо создать для этого свой плагин.
add_action( 'woocommerce_thankyou', 'truemisha_complete_orders', 25 ); function truemisha_complete_orders( $order_id ) { // time() + 86400 * 2 – через 2 дня wp_schedule_single_event( time() + 86400 * 2, 'truemisha_autocomplete_orders', array( $order_id ) ); } add_action( 'truemisha_autocomplete_orders', 'truemisha_autocomplete_orders_callback' ); function truemisha_autocomplete_orders_callback( $order_id ) { $order = wc_get_order( $order_id ); if( 'processing' == $order->get_status() ) { $order->set_status( 'completed', 'Заказ автовыполнен (прошло 2 дня с момента создания)' ); $order->save(); // или же без $order->save() // $order->update_status( 'completed', 'Заказ автовыполнен (прошло 2 дня с момента создания)' ); } }
processing
, а то мало ли какие изменения могли произойти с ним за два дня. $order->set_status()
, то потом обязательно нужно использовать метод $order->save()
, иначе изменения не сохранятся. Альтернативный вариант – использовать $order->update_status()
.$order->set_status()
и $order->update_status()
– что-то вроде комментария, он будет отображаться в админке на странице заказа, он необязателен.Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Большое человеческое спасибо.