Обычно wooCommerce должен автоматически завершать заказы на виртуальные продукты. Но это не так, и это реальная проблема, даже как ошибка.
Так что на данный момент вы можете найти некоторые полезные вещи (но не очень удобно):
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 *, оплаты при доставке и проверки способов оплаты. Это нормально для способов оплаты шлюзов Paypal и кредитных карт.
* BACS - это метод прямого банковского перевода
И...
2) Плагин: заказы автозаполнения WooCommerce
Этот плагин работает для всех способов оплаты, , но не для других способов оплаты шлюзами кредитных карт.
Мой вопрос:
Используя (в качестве основы) фрагмент wooCommerce в пункте 1:
Как реализовать условный код на основе методов оплаты woocommerce?
Я имею в виду что-то вроде: если способы оплаты не "BACS", "Оплата при доставке" и "Чек", тогда примените код фрагмента (обновите статус до "выполнено" для оплаченных заказов, касающихся виртуальных продуктов).
Некоторая помощь будет очень милой.