php - 根据订单注释触发 Woocommerce 外发电子邮件
问题描述
是否可以根据 WooCommerce 中添加的订单注释触发外发电子邮件?
我们已经与库存控制系统 (Mintsoft) 集成,该系统基本上通过订单备注向我们发回跟踪 ID(全部通过 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 文件中。经过测试,它应该可以工作。
推荐阅读
- javascript - 如何使一列没有空格的文本倾斜
- python - 回测股票世界
- python - 为什么 multiprocessing.Pool 不能更改全局变量?
- javascript - 有没有一种方法可以通过另一个页面中发生的事件来影响我的项目中的一个页面
- python - 这个循环有什么问题?继续在这里不起作用
- node.js - onCreate 处理程序的 DocumentSnapshot 未定义
- reactjs - 如何在生产状态下部署我的 Laravel React 项目
- php - 如何安装 libssh2?
- php - AngularJS ng-model 无法从输入字段中获取数据
- objective-c - 如何使用脚本编辑器库中列出的 Objective-C API?