WooCommerce批量设置自定义状态reminder无法发送客户备注邮件
问题原因及修复方案
核心问题点
订单备注可见性未设置
$order->add_order_note($note)默认添加的是管理员内部备注,WooCommerce的客户备注邮件仅会发送标记为客户可见的备注,因此邮件不会触发。邮件类名拼写错误
你使用的WC_Email_Note_Customer不是正确的类名,WooCommerce官方的客户备注邮件类是WC_Email_Customer_Note,这会导致无法获取邮件实例,邮件发送逻辑失效。trigger方法参数传递不严谨
直接传递订单对象比仅传ID更稳妥,能避免因订单数据未及时刷新导致的问题。
修复后的代码
// 处理订单批量操作 add_filter('handle_bulk_actions-edit-shop_order', 'status_bulk_action_edit_shop_order', 10, 3); function status_bulk_action_edit_shop_order($redirect_to, $action, $post_ids) { if ($action === 'reminder') { foreach ($post_ids as $post_id) { $order = wc_get_order($post_id); if (!$order) continue; // 跳过无效订单 $note = 'Test1'; $order->update_status('reminder'); send_order_note_email($order, $note); // 直接传递订单对象 } } return $redirect_to; } function send_order_note_email($order, $note) { // 添加客户可见的订单备注 $order->add_order_note($note, true); // 第二个参数设为true,标记为客户可见 // 获取正确的客户备注邮件实例 $mailer = WC()->mailer()->get_emails()['WC_Email_Customer_Note']; if ($mailer) { $mailer->trigger($order->get_id(), $note); // 传递订单ID和客户备注内容 } }
额外验证步骤
- 确保WooCommerce后台的客户备注邮件已启用:进入WooCommerce > 设置 > 邮件,找到“客户备注”选项,确认状态为启用。
- 测试时可开启WooCommerce的邮件日志(WooCommerce > 状态 > 日志,筛选邮件日志),查看邮件是否被触发及是否有错误信息。
内容的提问来源于stack exchange,提问作者Rodricus
相关产品推荐
相关产品推荐

