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

为特定WooCommerce邮件通知添加自定义用户邮箱至抄送列表

在WooCommerce订单完成邮件中添加自定义抄送(CC)地址的正确实现

我来帮你修正这段代码,解决在WooCommerce订单完成邮件里添加自定义CC地址的问题——原代码里有几个关键问题,比如未定义的$user_id、不完整的函数参数调用,还有没精准匹配订单完成的邮件类型,调整后的完整可用代码如下:

/**
 * 在WooCommerce订单完成客户通知邮件中添加自定义CC地址
 * @param string $headers 默认邮件头信息
 * @param string $object 邮件类型标识
 * @param WC_Email $email 邮件对象实例
 * @return string 修改后的邮件头
 */
function add_cc_to_completed_order_emails( $headers, $object, $email ) {
    // 仅针对「客户订单完成通知」邮件生效
    if ( 'customer_completed_order' !== $object ) {
        return $headers;
    }

    // 获取当前邮件关联的订单对象
    $order = $email->object;
    if ( ! $order instanceof WC_Order ) {
        return $headers;
    }

    // 获取订单绑定的用户ID
    $user_id = $order->get_user_id();
    if ( empty( $user_id ) ) {
        return $headers;
    }

    // 从用户元数据中获取自定义CC邮箱
    $cc_email = get_user_meta( $user_id, 'order_cc_email', true );
    
    // 验证邮箱格式合法性
    if ( ! empty( $cc_email ) && is_email( $cc_email ) ) {
        // 将CC头追加到现有邮件头中
        $headers .= 'Cc: ' . esc_html( $cc_email ) . "\r\n";
    }

    return $headers;
}
add_filter( 'woocommerce_email_headers', 'add_cc_to_completed_order_emails', 10, 3 );

关键修正与说明:

  • 补全过滤器参数:woocommerce_email_headers实际支持3个参数,新增$email参数才能获取到订单关联信息
  • 精准锁定邮件类型:只对customer_completed_order(客户端的订单完成通知)生效,避免干扰其他WooCommerce邮件
  • 多层安全校验:
    • 检查订单对象是否有效
    • 确认用户ID存在
    • 用is_email()确保获取到的是合法邮箱格式
  • 合规构建邮件头:用\r\n分隔头信息,保证邮件格式符合标准

使用提示:

你可以把这段代码添加到主题的functions.php文件,或者自定义插件中。另外要确保用户的自定义字段order_cc_email已经正确存储了目标邮箱地址(比如通过用户后台编辑页、前端表单等方式设置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:45:11