Как уменьшить запасы товаров в woocommerce при статусе «pending»?

Требуется что бы при получении статуса заказа - "в ожидании оплаты", в системе менялись запасы товара.

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

Пробовал такой код, но ничего не меняется:
add_filter( 'woocommerce_can_reduce_order_stock', 'order_stock_reduction_based_on_status');
function order_stock_reduction_based_on_status( $reduce_stock, $order ) {
    if ( ! $order->has_status( 'pending' ) ) {
         $reduce_stock = true;
    }
    return $reduce_stock;
}
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Так, а давайте для начала определим, почему у вас заказы попадают в статусе pending?

Потому что pending - это промежуточный, "технический" статус между созданием заказа и его оплатой с последующим переходом в статус processing (в случае успешной оплаты) или failed (в случае ошибки с оплатой или отказа).

Методы оплаты с "отложенной оплатой" (банковский перевод, наличкой/наложенным при получении) могут использовать статус on-hold - если оплату нужно подтверждать (заказ не начнет выполняться пока не будет подтверждения платежа), или сразу processing, если подтверждение не требуется (наличкой при получении). И processing, и on-hold уменьшают сток, потому что это как раз статусы, с которыми вам и надо работать - они для этого и созданы. А pending - это немножко про другое.

Подробнее: https://docs.woocommerce.com/document/managing-ord...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы