如何触发WooCommerce订单完成电子邮件?


10

我希望能够在WooCommerce结帐流程的另一个阶段触发WooCommerce订单完成电子邮件。因此,我已经从后端禁用了WooCommerce订购完整的电子邮件,现在正在寻找一行代码,这些代码将在我想要的位置触发电子邮件。我做了一些研究,发现了如何删除订单完整的电子邮件,但没有找到如何手动触发它。有小费吗?

谢谢!

Answers:


11

你可以试试这个

$mailer = WC()->mailer();
$mails = $mailer->get_emails();
if ( ! empty( $mails ) ) {
    foreach ( $mails as $mail ) {
        if ( $mail->id == 'customer_completed_order' ) {
           $mail->trigger( $order->id );
        }
     }
}

谢谢。有什么方法可以确保某人不会滥用它,即,如果我将其扔到thankyou页面上的特定位置,是否有人每次刷新页面时都不会发送电子邮件?
user3210369

WooCommerce会处理此问题,因为插件仅在挂机上发送电子邮件。但是您要在“感谢页面”上发送它,那么您需要注意这一点,您可以向用户meta添加一些meta值或在他/她的浏览器中存储一些cookie。并请将此答案标记为已接受,因为它可以完成当前工作。
Sumit 2015年

4

而不是像@Sumit所建议的那样循环或重用同一对象。您可以启动一个新对象,然后调用触发器。

$email_oc = new WC_Email_Customer_Completed_Order();
$email_oc->trigger($order_id);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.