Как добавить получателя BCC во все электронные письма, отправленные WooCommerce?

Я пытаюсь добавить BCC к каждой почте, отправляемой woocommerce/wp. Я попытался использовать другое решение, найденное в Интернете и на Stackoverflow, и добавил фрагменты в functions.php темы, которую я использую:

add_filter( 'woocommerce_email_headers', 'add_bcc_to_wc_admin_new_order', 10, 3 );
function add_bcc_to_wc_admin_new_order( $headers = '', $id = '', $wc_email = array() ) {
    if ( $id == 'new_order' ) {
        $headers .= "Bcc: [email protected]\r\n";
    }
return $headers;
}

а также

add_filter( 'woocommerce_email_headers', 'add_bcc_all_emails', 10, 2);

function add_bcc_all_emails($headers, $object) {

    $headers = array();
    $headers[] = 'Bcc: [email protected]';
    $headers[] = 'Content-Type: text/html';

    return $headers;
}

а также

add_filter('wp_mail','custom_mails', 10,1);

function custom_mails($args){
    $bcc_email = sanitize_email('[email protected]');

    if (is_array($args['headers'])){
        $args['headers'][] = 'Bcc: '.$bcc_email ;
    }
    else{
        $args['headers'] .= 'Bcc: '.$bcc_email."\r\n";
    }

    return $args;
}

Я использую «Календарь событий», поэтому я также пробовал это:

add_action( 'event_tickets_rsvp_tickets_generated', 'tribe_tickets_cc_organizer', 10, 3 );

function tribe_tickets_cc_organizer( $order_id = null, $post_id = null, $attendee_order_status = null ) {
    $to = tribe_get_organizer_email( $post_id, false );
    // bail if there's no valid email for the organizer
    if ( ! is_email( $to ) ) return;
        $event_name        = get_the_title( $post_id );
        $site_name         = get_bloginfo( 'name' );
        $attendee_list_url = admin_url( 'edit.php?post_type=tribe_events&page=tickets-attendees&event_id=' . $post_id ); 
        $content     = '<a href="' . esc_url( $attendee_list_url ) . '" style="color: #000; font-family: sans-serif;">Check the event attendee list</a>';
        $headers     = array( 'Content-type: text/html' );
        $subject     = sprintf( __( 'Your event %1$s has new attendee(s) - %2$s', 'tribe-extension' ), $event_name, $site_name );
        wp_mail( $to, $subject, $content, $headers);
    }

add_action( 'event_ticket_woo_attendee_created', 'tribe_woo_compat_cc', 10, 4 );

function tribe_woo_compat_cc ( $attendee_id, $event_id, $order, $product_id ) {
    tribe_tickets_cc_organizer( null, $event_id );
}

Все темы не работают должным образом. Они игнорируют BCC и снова отправляют все электронные письма, поэтому администратор и пользователь получают почту дважды. Но добавленная скрытая почта не получает ни одной почты. Я не могу понять, почему это не работает. У кого-нибудь есть идея?

Заранее спасибо.


person DBR    schedule 22.10.2018    source источник


Ответы (3)


Может быть, вы можете попробовать с:

function add_bcc_all_emails( $headers, $object ) {

    $headers = array( 
         $headers,
         'Bcc: Me <[email protected]>' ."\r\n",
    );

    return $headers;
}
add_filter( 'woocommerce_email_headers', 'add_bcc_all_emails', 10, 2 );
person jjj    schedule 22.10.2018
comment
Спасибо, это сработало для меня! Честно говоря, я считаю, что проблема была примерно в 30 см (~ 11 дюймов) перед компьютером. Поэтому я предлагаю, чтобы один из моих уже опубликованных фрагментов работал для кого-то другого. - person DBR; 23.10.2018

Для решения без кода попробуйте вместо этого использовать плагин Post SMTP для обработки вашей электронной почты. В разделе «Настройки» / «Сообщение» есть возможность использовать скрытую копию для всех электронных писем, исходящих из WP, в том числе из WooCommerce.

person Adam    schedule 03.12.2020

person    schedule
comment
Спасибо за фрагмент, но это не сработало для меня вообще. Только обычные письма, где были получены. - person DBR; 23.10.2018