订单状态从待处理更改为已取消时发送电子邮件通知

时间:2017-08-17 10:15:52

标签: php wordpress woocommerce orders email-notifications

在以前的Woocommerce版本中,当订单从待处理状态更改为已取消状态时,会自动发送电子邮件通知(在我的情况下,这会在管理员的清单部分中设置的分配时间后发生)。

在WooCommerce 3.0.8中,他们已删除此自动化并标记为修复: https://github.com/woocommerce/woocommerce/blob/master/CHANGELOG.txt

拉取请求在这里: https://github.com/woocommerce/woocommerce/pull/15170/files

我正在寻求恢复此功能,但显然将此行复制/粘贴回Woocommerce核心文件并不是一个好主意,因为它会在平台更新时被覆盖。

我知道最好的方法是创建一个函数并通过functions.php挂钩到取消的订单操作但看了之后我有点迷失了如何做到这一点。这是被替换的行:

add_action( 'woocommerce_order_status_pending_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );

如何恢复旧的自动化功能?

2 个答案:

答案 0 :(得分:5)

好新的:使用woocommerce_order_status_pending_to_cancelled动作挂钩并在其中添加自定义函数挂钩,最终解决您的问题:

add_action('woocommerce_order_status_pending_to_cancelled', 'cancelled_send_an_email_notification', 10, 2 );
function cancelled_send_an_email_notification( $order_id, $order ){
    // Getting all WC_emails objects
    $email_notifications = WC()->mailer()->get_emails();

    // Sending the email
    $email_notifications['WC_Email_Cancelled_Order']->trigger( $order_id );
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

经过测试,完美适用于WooCommerce 3+ (和3.1 +)

答案 1 :(得分:1)

由于声誉较低,我无法发表评论,因此我在此处添加此信息以供将来参考。

自版本3.0.9以来,Woocommerce已将此问题修复,并将通知发送给管理员。 Link

* Fix - Updated `woocommerce_email_actions` to send email when order status changes from processing to cancelled.

您不再需要此代码了。