Измените статус заказа наложенного платежа по умолчанию на "В ожидании" вместо "Обработка" в Woocommerce

Мне нужна помощь с проблемой, связанной с плагином "WooCommerce Pay for Payment", который учитывает дополнительную плату за доставку. Проблема в том, что этот плагин автоматически устанавливает статус "обработки" в порядке, который вызывает благодарность по электронной почте за оплату (в случае локального платежа) и не отправляет уведомление по электронной почте о новом заказе, поэтому клиент смущен (я не отправлял деньги и я получил письмо "спасибо за ваш платеж").

Я пробовал это решение: установить статус заказа WooCommerce при создании заказа от обработки до ожидания

Но это только изменяет статус заказа обратно на "в ожидании", но все равно отправляет письмо с благодарностью за оплату.

Единственное, что мне нужно, это отправлять клиенту в каждом новом заказе электронное письмо о новом заказе, не более того (я бы хотел изменить статус на "обработка" вручную).

Спасибо за помощь, я не знаю, как решить, потому что я не мог найти файл PHP, вызывающий изменение статуса в плагине.

РЕДАКТИРОВАТЬ: Извините всех. Это была проблема ХПК в плагине woocommerce. Не платите за платеж, как я уже говорил. Woocommerce COD автоматически устанавливает статус "обработки".

Я нашел решение для этого на GitHub: здесь

Это первый код.

Основываясь на ответе на этот вопрос, этот код работал нормально для меня:

function sv_wc_cod_order_status( $status ) {
    return 'on-hold';
}
add_filter( 'woocommerce_cod_process_payment_order_status', 'sv_wc_cod_order_status', 15 ); 

1 ответ

Решение

Код, который вы нашли в Github, устарел, неуклюж и сложен, так как теперь есть специальный фильтр-хук. Вам лучше попробовать этот легкий и эффективный код, который установит статус заказа по умолчанию для шлюза оплаты наложенным платежом (COD) на "В ожидании":

add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10 );
function change_cod_payment_order_status( $order_status, $order ) {
    return 'on-hold';
}

Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.



Таким образом, статус заказа по умолчанию, установленный платежным шлюзом, теперь "На удержании" вместо "Обработка"

В моем случае,

add_filter( 'woocommerce_cod_process_payment_order_status','change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
  return 'on-hold';
}

Отлично работал в WC 4.42 + WP 5.4.1

Спасибо!

Два решения выше одинаковы за исключением:

  • решение @LoicTheAztek имеет 2 аргумента в основной функции и имеет приоритет "10"
  • решение @Jiří-Prek имеет аргументы в основной функции и имеет приоритет "15"

но для моего WP5.1.1 и WC3.5.7

function change_cod_payment_order_status( $order_status, $order ) {
return 'on-hold';

}

генерация ошибки

Неустранимая ошибка PHP: Uncaught ArgumentCountError: Слишком мало аргументов для функции change_cod_payment_order_status()

поэтому я предпочитаю использовать код только с одним аргументом в основной функции

Другие вопросы по тегам