【问题标题】:WooCommerce email IDs and order status change for email notifications电子邮件通知的 WooCommerce 电子邮件 ID 和订单状态更改
【发布时间】:2019-01-12 13:35:15
【问题描述】:

我正在尝试添加一个功能,该功能将记录通过订单状态更改发送的任何电子邮件。

我可以使用在发送订单通知电子邮件之前触发的挂钩吗?

【问题讨论】:

标签: php woocommerce hook-woocommerce orders email-notifications


【解决方案1】:

更新

所有负责触发电子邮件通知的可用钩子都位于WC_Emails init_transactional_emails() method,并且是动作钩子:

  • woocommerce_low_stock,
  • woocommerce_no_stock,
  • woocommerce_product_on_backorder,
  • woocommerce_order_status_pending_to_processing,
  • woocommerce_order_status_pending_to_completed,
  • woocommerce_order_status_processing_to_cancelled,
  • woocommerce_order_status_pending_to_failed,
  • woocommerce_order_status_pending_to_on-hold,
  • woocommerce_order_status_failed_to_processing,
  • woocommerce_order_status_failed_to_completed,
  • woocommerce_order_status_failed_to_on-hold,
  • woocommerce_order_status_on-hold_to_processing,
  • woocommerce_order_status_on-hold_to_cancelled,
  • woocommerce_order_status_on-hold_to_failed,
  • woocommerce_order_status_completed,
  • woocommerce_order_fully_refunded,
  • woocommerce_order_partially_refunded,
  • woocommerce_new_customer_note,
  • woocommerce_created_customer.

每个动作挂钩都可以排队发送事务性电子邮件,您将在line 95line 99的源代码中看到。

新订单通知的最后一件事,有点奇怪,您将使用其中之一:

  • woocommerce_order_status_pending_to_processing_notification,
  • woocommerce_order_status_pending_to_completed_notification,
  • woocommerce_order_status_pending_to_on-hold_notification,
  • woocommerce_order_status_failed_to_processing_notification,
  • woocommerce_order_status_failed_to_completed_notification,
  • woocommerce_order_status_failed_to_on-hold_notification,

this WC_Email_New_Order code source 中所述。


或者您可以使用位于 status_transition() WC_Order method 的 3 个挂钩之一来检测状态变化:

  • woocommerce_order_status_changed
  • woocommerce_order_status_{$status_transition[from]}_to_{$status_transition[to]}
  • woocommerce_order_status_{$status_transition[to]}

status_transition() 包含在set_status() WC_Order method(同样 update_status() method 也调用set_status()

【讨论】:

  • 感谢您的回答,但我不是在尝试检测状态变化,而是在尝试检测订单状态何时触发发送电子邮件通知,以便我可以记录它们(作为订单说明或其他方式)。
  • 是的,但是如果我将已完成的订单更改回处理新订单的电子邮件不会重新发送,所以这就是为什么我要搜索一个依赖于电子邮件而不是具有订单状态的钩子的原因。我想我可以找到所有可能的情况,即每次状态转换都会发送一封电子邮件,但我想知道是否有比这更好的方法。
  • 正是我想要的。谢谢。
  • @Vpant 刚刚添加了一些关于“新订单”的附加信息......所以我的第一个答案很好,因为所有使用的挂钩都是在这个复合挂钩上制作的:woocommerce_order_status_{$status_transition[to]}woocommerce_order_status_{$status_transition[from]}_to_{$status_transition[to]}...
猜你喜欢
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2022-01-03
  • 2018-02-17
相关资源
最近更新 更多