禁用 WooCommerce 手动/编辑订单的电子邮件通知

Tud*_*son 6 php wordpress webhooks email-notifications woocommerce

需要 WooCommerce 专业知识

我需要为我手动创建的订单禁用电子邮件通知,我必须使用处理状态,由于处理订单状态的自定义挂钩,我无法创建自定义状态。

理想情况下,可以勾选手动订单页面中的复选框,勾选后,它将禁止在每个状态下向客户发送电子邮件。(处理 - 完成)。

原因是由于数据库原因,必须将 ebay 订单输入到后端订单中,我们不希望将已通过 ebay 发送给客户的电子邮件重新发送给客户。

我猜这个钩子需要被调用:

remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );
Run Code Online (Sandbox Code Playgroud)

和这个:

remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
Run Code Online (Sandbox Code Playgroud)

Mar*_*uay 7

如果您只想从管理员中删除它们并在客户在前端购买东西时继续发送新的订单电子邮件,请将操作删除包装在一些逻辑中以检查这种情况。我已经包含了这个 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' ) );

    }
}
Run Code Online (Sandbox Code Playgroud)


小智 4

请参阅函数。在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.
}
Run Code Online (Sandbox Code Playgroud)

  • 最好在这里提供一个摘要,以防将来链接中断。 (2认同)