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

Необходим опыт WooCommerce

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

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

Причина в том, что заказы ebay должны быть введены в заказы backend по причинам, связанным с базой данных, и мы не хотим, чтобы клиенту повторно отправлялись электронные письма, которые уже были отправлены через 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' ) );

person Tudor Gibson    schedule 27.05.2016    source источник


Ответы (2)


Если вы хотите удалить их только у администратора и продолжать получать электронные письма с новыми заказами, когда клиенты покупают что-то на веб-интерфейсе, оберните удаление действий в некоторой логике, чтобы проверить этот случай. Я включил все соответствующие электронные письма из этого примера 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' ) );

    }
}
person MarcGuay    schedule 25.10.2017

См. функцию. В 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.
}
person eavinu    schedule 01.01.2017
comment
Было бы неплохо предоставить здесь резюме на тот случай, если в будущем ссылка прервется. - person Matthew Strawbridge; 01.01.2017