将 BCC 收件人添加到来自 ACF 选项的 WooCommerce 电子邮件通知

问题描述

使用高级自定义字段插件,我在 wordpress 选项选项卡中创建了一个自定义字段,允许我的客户添加额外的电子邮件,该电子邮件将接收 Woocommerce 新订单电子邮件确认,以及他们自己。

如果我对电子邮件地址进行硬编码,下面的功能将起作用。虽然我希望额外的电子邮件收件人从客户端可以添加/更改等的 ACF 选项中提取。电子邮件从选项 ACF 中正确提取。虽然当我尝试将电子邮件连接到 BCC 时,新电子邮件没有收到新订单电子邮件

谁能指出我哪里出了问题?谢谢

add_filter( 'woocommerce_email_headers','mycustom_headers_filter_function',10,2);
function mycustom_headers_filter_function( $headers,$object) {

    $additional_order_email_recipient = get_field('manufacturer_email_recipient','options');
    $manu_email = "&lt".$additional_order_email_recipient."&gt";
    $email_header = "BCC: Manufacture " . $manu_email . "\r\n";

    if ($object == 'new_order') {

        $headers .= "BCC: New Order <email@domain.co.uk>" . "\r\n"; // This Works
        $headers .= "BCC: New Order " . $manu_email . "\r\n"; // This doesnt work
        $headers .= $email_header; // This doesnt work

    }
    return $headers;
}

解决方法

您的代码中有一些错误……您需要检查在使用 ACF 自定义字段时是否获得了值:get_field( 'manufacturer_email_recipient','options' )

如果是这种情况,请尝试以下操作:

add_filter( 'woocommerce_email_headers','bcc_to_email_headers',10,3 );
function bcc_to_email_headers( $headers,$email_id,$order ) {

    if ( $email_id === 'new_order' ) {
        $manufacturer_email = get_field( 'manufacturer_email_recipient','options' );

        if ( $manufacturer_email ) {
            $headers .= "BCC: Manufacture <" . $manufacturer_email . ">\r\n";
        }
    }
    return $headers;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。

相关:New Account Email Notification sent to Admin as BCC in Woocommerce