首页 > 解决方案 > 根据订单注释触发 Woocommerce 外发电子邮件

问题描述

是否可以根据 WooCommerce 中添加的订单注释触发外发电子邮件?

我们已经与库存控制系统 (Mintsoft) 集成,该系统基本上通过订单备注向我们发回跟踪 ID(全部通过 REST API 链接)

我已经设法根据里面的文本挂钩到笔记的内容,因为订单对象包含了你想要的几乎所有东西——但是它超出了通常的“已完成”邮件发出的范围,这意味着一个模板改变是不可能的。

我的想法是根据状态禁用自动电子邮件并尝试我自己的,这有什么钩子吗?

标签: phpwordpresswoocommerceorderswoocommerce-rest-api

解决方案


如果你看一下WC_Order add_order_note()方法代码,你会在里面看到两个可用的钩子,你可以使用第一个方便的钩子。

在下面的代码中,您拥有所有参数数据、订单 ID、WC_Order 对象以及发送电子邮件通知的方式:

add_filter( 'woocommerce_new_order_note_data', 'filter_woocommerce_new_order_note_data', 10, 2 );
function filter_woocommerce_new_order_note_data( $args, $args2 ) {
    if( ! $args2['is_customer_note'] ){
        // Get an instance of the WC_Order Object
        $order = wc_get_order( $args2['order_id'] );

        // Getting all WC_emails objects
        $mailer = WC()->mailer()->get_emails();

        // Send the "Completed" notification
        $mailer['WC_Email_Customer_Completed_Order']->trigger( $args2['order_id'] );
    }

    return $args;
}

代码继续在您的活动子主题(或活动主题)的 function.php 文件中。经过测试,它应该可以工作。

相关:将 Shop Manager 用户名添加到 Woocommerce Admin Order notes


推荐阅读