You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce批量设置自定义状态reminder无法发送客户备注邮件

问题原因及修复方案

核心问题点

  1. 订单备注可见性未设置
    $order->add_order_note($note)默认添加的是管理员内部备注,WooCommerce的客户备注邮件仅会发送标记为客户可见的备注,因此邮件不会触发。

  2. 邮件类名拼写错误
    你使用的WC_Email_Note_Customer不是正确的类名,WooCommerce官方的客户备注邮件类是WC_Email_Customer_Note,这会导致无法获取邮件实例,邮件发送逻辑失效。

  3. 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和客户备注内容
    }
}

额外验证步骤

  1. 确保WooCommerce后台的客户备注邮件已启用:进入WooCommerce > 设置 > 邮件,找到“客户备注”选项,确认状态为启用。
  2. 测试时可开启WooCommerce的邮件日志(WooCommerce > 状态 > 日志,筛选邮件日志),查看邮件是否被触发及是否有错误信息。

内容的提问来源于stack exchange,提问作者Rodricus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:01:04