Мне нужна помощь с проблемой, связанной с плагином «WooCommerce Pay for Payment», который учитывает дополнительную плату за доставку. Проблема в том, что этот плагин автоматически устанавливает статус «обработки», что приводит к тому, что электронная почта благодарна за оплату (в случае локальной оплаты), и не отправляет уведомление по электронной почте о новом заказе, поэтому покупатель смущен (я не отправлял никаких деньги, и я получил письмо "спасибо за вашу оплату").
Я пробовал это решение: Установите статус заказа WooCommerce, когда заказ создается из обработки в ожидающий
Но он только меняет статус заказа на «отложен», но все равно отправляет электронное письмо с благодарностью за оплату.
Единственное, что мне нужно, - это отправлять клиенту в каждом новом заказе электронное письмо о новом заказе, не более того (я хотел бы вручную изменить статус на «обработка»).
Спасибо за помощь, я не знаю, как решить, потому что мне не удалось найти файл PHP, вызывающий изменение статуса в плагине.
Обновлено: Извините всех. Это была проблема COD в плагине 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 );
🤔 А знаете ли вы, что...
С PHP можно создавать кастомные расширения с помощью Си-кода.
Обновлено: Код, что вы нашли в Github, устаревший, неуклюжий и сложный, поскольку сейчас есть специальный крючок для фильтра. Вам лучше попробовать этот легкий и эффективный код, который установит статус заказа по умолчанию для платежного шлюза "Оплата при доставке"(ХПК) на "На удерживании":
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';
}
Код находится в файле functions.php вашей активной дочерней темы (активной темы). Проверено и работает.
So the default order status set by the payment gateway is now "On Hold" instead of "Processing"
два решения выше одинаковы, за исключением:
но для моих WP5.1.1 и WC3.5.7
function change_cod_payment_order_status( $order_status, $order ) {
return 'on-hold';
}
генерирует ошибку
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function change_cod_payment_order_status()
поэтому я предпочитаю использовать код только с одним аргументом в основной функции