Отключить уведомление по электронной почте для руководства WooCommerce / редактировать заказы

Требуется опыт WooCommerce

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

В идеале флажок на странице заказа вручную, который может быть отмечен, и когда он отмечен, он будет запрещать отправку электронной почты клиенту при каждом статусе. (обработка — завершена).

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

Я предполагаю, что этот хук нужно будет назвать:

remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );

И это:

remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );

3

Решение

Я вижу, что у вас нет ответа здесь, не уверен, что вам удалось решить эту проблему, но также для других людей, которые ищут эту информацию, пожалуйста, обратитесь к функции:

https://docs.woocommerce.com/document/unhookremove-woocommerce-emails/

В functions.php или пользовательском плагине:

add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );

function unhook_those_pesky_emails( $email_class ) {

remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) ); // cancels automatic email of order complete status update.
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) ); // cancels automatic email of new order placed (when defined to procession status)
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) ); // cancels automatic email of status update to processing.
}
3

Другие решения

Если вы хотите удалить их только от администратора и продолжать получать новые электронные письма с заказами, когда клиенты покупают вещи на веб-интерфейсе, оберните действия по удалению в некоторой логике, чтобы проверить это. Я включил все соответствующие письма из этого примера WooCom (https://docs.woocommerce.com/document/unhookremove-woocommerce-emails/), удаляя те, которые либо не генерируются путем создания / редактирования заказов в администраторе, либо уже имеют возможность отправлять или не отправлять (заметки).

add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );

function unhook_those_pesky_emails( $email_class ) {

if ( is_admin() && ! wp_doing_ajax() ) {

// New order emails
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_pending_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_failed_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_failed_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );

// Processing order emails
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );

// Completed order emails
remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );

}
}
0

По вопросам рекламы [email protected]