我想以编程方式触发新的订单电子邮件,因此它看起来与标准的Woocommerce电子邮件模板相同。
我正在使用WC_Email_New_Order类,所以我可以在从它构造电子邮件之前调整订单对象。
在一些测试代码中,我现在将其解雇为wp_head钩子,仅用于测试目的。
add_action('wp_head', function() {
include('wp-content/plugins/woocommerce/includes/emails/class-wc-email.php');
include('wp-content/plugins/woocommerce/includes/emails/class-wc-email-new-order.php');
$adminEmail = new WC_Email_New_Order();
$id = 1564; // order
$order = new WC_Order($id);
$adminEmail->trigger( null, $order );
});
这部分工作...我收到了正确的主题行的电子邮件,但电子邮件正文说...
You’ve received the following order from Dave Peterson:
如何触发其余的电子邮件模板?
您可以在任何具有动态变量$order_id
的钩子函数中尝试使用以下内容:
// Get the WC_Email_New_Order object
$email_new_order = WC()->mailer()->get_emails()['WC_Email_New_Order'];
// Sending the new Order email notification for an $order_id (order ID)
$email_new_order->trigger( $order_id );
这通常会触发当前订单ID的新订单Woocommerce通知。
您只需要一个订单对象来触发新订单电子邮件。 WC()->mailer()->emails['WC_Email_New_Order']->trigger( $order->get_id(), $order );