仅对已付款订单发送WooCommerce新订单电子邮件通知



Woocommerce的正常行为是:

  • 如果订单"待定";(等待付款)它不发送"新的Order"电子邮件
  • 如果订单"待定"(等待确认),则发送"新订单";电子邮件。
  • 如果订单立即从& Pending";Processing"(通过支付网关)-它发送"新订单";电子邮件。

我想发送"新订单"只有当订单状态达到"处理中"时才会发送电子邮件;(无论之前的状态)

所以最终的目标是阻止woocommerce发送"新订单"。关于订单状态的电子邮件"保留"并使其只在状态达到"正在处理"时发送(并且总是)。

首先,我尝试了WooCommerce向管理员发送电子邮件通知以获取特定的订单状态回答代码,这对于成功触发"新订单"非常有效。邮件显示订单状态"正在处理",但是邮件仍然显示订单状态"保留"。(所以有时可能会发送两次)。

试图通过禁用"新订单"电子邮件"持有">

管理祝辞祝辞Woocommerce祝辞祝辞设置在比;电子邮件

然后禁用"新订单";通过点击管理按钮订购电子邮件,不工作(这完全禁用了电子邮件,它完全停止发送,即使触发处理由上述代码)

然后我尝试了禁用WooCommerce新订单电子邮件通知,如果订单状态为On hold回答代码。

然而,它成功地禁用了新订单电子邮件,但如果订单从"On Hold";Processing"你根本没有收到任何电子邮件,如果一个新订单被直接设置为处理,而你有之前触发电子邮件的代码,那么你也有收到2封电子邮件的问题。从

切换状态
return $order->get_status() === 'on-hold' ? '' : $recipient;

:

return $order->get_status() === 'processing' ? '' : $recipient;

禁用"新订单"电子邮件完全。

我基本上想记录我的挣扎,并分享我目前的解决方案,因为似乎有相当多的人有同样的意图,但没有明确的简洁和实际的功能方法。

这是我设法使工作正常,删除所有的新订单触发的可能性完全(在这里提供的woocommerce):

/**
* Unhook and remove WooCommerce all default "New Order" emails.
*/
add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );
function unhook_those_pesky_emails( $email_class ) {
// New order emails
remove_action( 'woocommerce_order_status_on-hold_to_processing_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_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );
}

并使用以下触发器(由@LoicTheAztec在此线程中提供)

/** 
* trigger "New Order" email on "processing" status
*/
add_action( 'woocommerce_order_status_processing', 'process_new_order_notification', 20, 2 );
function process_new_order_notification( $order_id, $order ) {
// Send "New Email" notification (to admin)
WC()->mailer()->get_emails()['WC_Email_New_Order']->trigger( $order_id );
}

这可能不干净,很可能不是最优化的方式,但这是我发现的唯一成功创建"新秩序"的方式。电子邮件只发送当订单已经支付(设置为处理状态),并希望它设法帮助别人。

Since WooCommerce 5+:WooCommerce 5+允许重新发送新订单通知

最新更新