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