Intereting Posts
Необычная ошибка «Заголовки уже отправлены». Отсутствие пробелов или изменение заголовка Многомерный массив php удаляет дубликаты Уведомление PayPal IPN, получающее несколько уведомлений за один и тот же платеж Как получить переменные сеанса с php-сервера с помощью функции Ajax? (PHP HTML JS Ajax) PHP, Объединение массивов с помощью общих ключей Как избежать нежелательной переносимости сеанса между различными экземплярами приложения Где разместить Blade :: extend Получение неправильного значения для функции variant_date_to_timestamp () Множественная настройка базы данных нескольких арендаторов PHP конвертирует hex в байт Symfony2: Twig: файл шаблона по умолчанию в настраиваемом месте передача переменной php с использованием URL-адреса контроллер существует, но страница не найдена Ошибка с запросом MySQL «CREATE TABLE» Показать или скрыть поля проверки на основе метода доставки в Woocommerce 3

WooCommerce: автоматическое завершение оплаченных заказов (в зависимости от способов оплаты)

Обычно wooCommerce должен автозаполнять заказы для виртуальных продуктов. Но это не так, и это настоящая проблема, даже BUG.

Итак, на данный момент вы можете найти полезные полезные вещи (но не очень удобные):

1) Код фрагмента (который вы можете найти в документах wooCommerce):

/** * Auto Complete all WooCommerce orders. */ 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 ); $order->update_status( 'completed' ); } 

Но этот фрагмент не работает для BACS * , Pay on delivery и Check payment methods. Это нормально для способов оплаты шлюзов Paypal и Credit Card.

* BACS – это метод прямого банковского перевода

А также …

2) Плагин: Заказы Autocomplete WooCommerce

Этот плагин работает для всех способов оплаты, но не для других способов оплаты шлюзов кредитной карты .

Мой вопрос:

Используя (в качестве базы) фрагмент wooCommerce в пункте 1:

Как я могу реализовать условный код на основе способов оплаты woocommerce?

Я имею в виду что-то вроде: если методы оплаты не являются «BACS», «Pay on delivery» и «Check», тогда примените код фрагмента (статус обновления «завершен» для платных заказов, касающихся виртуальных продуктов).

Я не эксперт-кодекс wooCommerce mega, поэтому я еще не нашел, как настроить способы оплаты в заказах woocommerce.

Некоторая помощь будет очень приятной.

Благодарю.

Я нашел решение этой проблемы (работает с WC 3.0+) :

 /** * AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE */ add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); // No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods. if ( ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) { return; } // "completed" updated status for paid Orders with all others payment methods else { $order->update_status( 'completed' ); } } 

С помощью этого сообщения: Как проверить способ оплаты по заказу WooCommerce по id?

с этим: get_post_meta( $order_id, '_payment_method', true ); от helgatheviking

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

благодаря

Обновлен код совместимости с WC 3.0+ (2017-06-10)