将 WooCommerce 电子邮件通知发送到帐单和用户电子邮件地址

Send WooCommerce email notifications to billing and user email address

我想使用 woocommerce_mail_headers 过滤器将自定义电子邮件发送到帐单电子邮件地址和用户电子邮件地址。

最近几天我阅读了很多关于这个问题的不同帖子,但我找不到有效的解决方案。

$cc_email$user_name 是预定义的但当它们是可变的(取决于 $order)时,下面的代码是可以的。

my_custom_email 是我的电子邮件模板的 ID(非常接近 WooCommerce 电子邮件模板)

add_filter( 'woocommerce_email_headers', 'cc_user_function', 10, 3);
 
function cc_user_function($headers, $email_id, $order) {
       
    if ($email_id == 'my_custom_email'){
         $order_nr = wc_get_order( $order );
         $user_id   = $order_nr->get_user_id();
        $cc_email = get_userdata($user_id)->user_email ;
      
           $user_name  = $user->get_first_name().' ';
           $user_name .= $user->get_last_name();

    $formatted_email = utf8_decode($user_name . ' <' . $cc_email . '>');

    $headers .= 'Cc: '.$formatted_email .'\r\n';
}

            return $headers;
}

你能帮我解决这个问题吗?

要获取 WP_User 对象的实例,您可以使用 $order->get_user()

所以你得到:

function filter_woocommerce_email_headers( $header, $email_id, $order ) {
    // For a given email id & user id exists (no guests)
    if ( $email_id == 'customer_on_hold_order' && $order->get_user_id() > 0 ) {
        // Get an instance of the WP_User object
        $user = $order->get_user();
        
        // Get user email
        $user_email = $user->user_email;
        
        // Get first & last name
        $user_name = $user->first_name . ' ';
        $user_name .= $user->last_name;
    
        // Prepare the the data
        $formatted_email = utf8_decode( $user_name . ' <' . $user_email . '>' );

        // Add Cc to headers
        $header .= 'Cc: ' . $formatted_email . '\r\n';
    }

    return $header;
}
add_filter( 'woocommerce_email_headers', 'filter_woocommerce_email_headers', 10, 3 );