#php #wordpress #woocommerce #orders #email-notifications
Вопрос:
Мне нужно настроить все заказы WooCommerce, поступающие как «отложенные», на «обработку», а также немедленно отправить электронное письмо об обработке заказов.
Я попробовал это
function custom_woocommerce_auto_order( $order_id ) { if ( ! $order_id ) { return; } $order = wc_get_order( $order_id ); if( 'on-hold'== $order-gt;get_status() ) { $order-gt;update_status( 'processing' ); } } add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_order' );
Несмотря на изменение статуса, уведомление по электронной почте «на удержании» все равно будет отправлено, даже если это должно быть только уведомление по электронной почте «обработка».
Есть какие-нибудь советы?
Ответ №1:
Заказ будет иметь статус отложенного до тех пор, пока платеж не будет завершен. Чтобы немедленно изменить статус заказа по умолчанию для некоторых способов оплаты на «Обработка» (и пропустить статус «отложено») и отправить уведомление об обработке по электронной почте, вы можете использовать:
- Bacs —
woocommerce_bacs_process_payment_order_status
крючок для фильтра woocommerce_cheque_process_payment_order_status
Крючок для фильтра чековwoocommerce_cod_process_payment_order_status
Крючок для трескового фильтра
Таким образом, вы получаете:
function filter_process_payment_order_status( $status, $order ) { return 'processing'; } add_filter( 'woocommerce_bacs_process_payment_order_status','filter_process_payment_order_status', 10, 2 ); add_filter( 'woocommerce_cheque_process_payment_order_status','filter_process_payment_order_status', 10, 2 ); add_filter( 'woocommerce_cod_process_payment_order_status', 'filter_process_payment_order_status', 10, 2 );
Эти фильтры приводят к изменению статуса на желаемый статус. Уведомление по электронной почте будет отправлено автоматически на основании этого