Немедленно установите отложенные заказы на обработку в WooCommerce и отправьте уведомление об обработке по электронной почте

#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 );  

Эти фильтры приводят к изменению статуса на желаемый статус. Уведомление по электронной почте будет отправлено автоматически на основании этого