WooCommerce 电子邮件 ID 和电子邮件通知的订单状态更改

WooCommerce email IDs and order status change for email notifications

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

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

已更新

负责触发电子邮件通知的所有可用挂钩位于 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.

Each of those action hooks can queue or send transactional emails as you will see in the source code on line 95 or on line 99.

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

  • 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]}

The status_transition() is included in set_status() WC_Order method (and so also update_status() method too which call set_status()).