@NowebNolife
Web Developer

Как автоматически измененить статус заказа в Woocommerce?

Имеется сайт продажи контента по подписке используя рекуррентные платежи + плагин Woocommerce версии 4.1.1.
Проблема: После оплаты подписки статус заказа Woocommerce переходит в статус «В обработке», и приходится в ручную менять на статус заказа на «Выполнен» для активации подписки и предоставления клиенту доступа к контенту.
Требуется, чтобы статус заказа(после оплаты) автоматически менялся на «Выполнен», минуя статус «В обработке».
После ресёрча по интернету нашел несколько готовых функций, но они, к сожалению, не работают.
Пример:
function wc_mark_all_orders_as_complete($order_status, $order_id) {
 $order = new WC_Order($order_id);
 if ($order_status == 'processing' && ( $order->status == 'on-hold' || $order->status == 'pending' || $order->status == 'failed' )) {
 return 'completed';
 }
return $order_status;
 }
add_filter('woocommerce_payment_complete_order_status', 'wc_mark_all_orders_as_complete', 10, 2);

Также пытался использовать плагины для автоматической смены статусов заказа - всё тщетно. Заказам, после успешной оплаты, всегда присваивается статус «В обработке».
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
@NowebNolife Автор вопроса
Web Developer
UPD:

Решил данную проблему, добавив данную функцию в functions.php

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
    function custom_woocommerce_auto_complete_order( $order_id ) { 
        if ( ! $order_id ) {
            return;
        }
        $order = wc_get_order( $order_id );
        if( $order->has_status( 'processing' ) ) {
            $order->update_status( 'completed' );
        }
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
billyOne
@billyOne
Энтузиаст из села
Если товары указать как виртуальные то для таких видов товара есть дополнение к WooCommerce, Orders Autocomplete.
https://wordpress.org/plugins/autocomplete-woocomm...
Я сам недавно делал проект и нужна была эта функция, чтоб после оплаты товар переводился в состояние Выполнен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы