WooCommerce에서 완료된 주문에 두 번째 이메일 주소 추가 [닫기]


11

이 질문을하기 전에 Woo 제품에 대한 질문에 대답 할 수있는 망설임이 있다는 것을 알고 있습니다. Woo 제품은 자체 지원이 있기 때문에 사용자는이 제품을 사용하도록 권장해야합니다. 나는 유료 Woo 사용자이지만 유료 지원 으로이 문제를 해결할 수 없으며 내 질문은 WP의 클래스를 재정의하는 것에 관한 것이므로 공정한 청문회를 갖기를 바랍니다.

내 질문 : 완성 된 주문 이메일이 고객에게 발송되면 다양한 송장 PDF로 작성된 것과 같은 다른 형식이 아닌 고객에게 발송 된 그대로 그대로 자동 으로이 이메일을 받아야합니다. WooCommerce를위한 플러그인. 다음 줄을 변경하여 쉽게 수행 할 수 있습니다 /woocommerce/classes/emails/class-wc-email-customer-completed-order.php.

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

읽다:

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
$this->send( me@myemail.com, $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

그러나 분명히 이와 같은 핵은 업그레이드에서 살아남지 못할 것입니다. WooCommerce 템플릿을 재정의하는 하위 테마가 있습니다. 비슷한 캡슐 방식으로 클래스를 재정의 할 수있는 동등한 메커니즘이 있습니까? 또는 고객이 이메일을받을 때이 이메일을받는 특정 작업을 수행하기 위해 SMTP 서버에서 모든 발신 이메일을 숨은 참조로 설정하는 것 외에 다른 방법을 권장 할 수 있습니까?


나는 SMTP 서버 이전과 구글 / Gmail을 사용했으며, 실제로 풋는 (귀하의 경우 무엇의 가치에 대한)을 보냈습니다 폴더에서 이메일을 ... 알레
Ewout

답변:


22

실제로 사용할 수있는 필터가 있습니다 ( abstract-wc-email.php라인 214 참조 ).

return apply_filters( 'woocommerce_email_recipient_' . $this->id, $this->recipient, $this->object );

functions.php에 다음을 넣을 수 있습니다.

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2);

function your_email_recipient_filter_function($recipient, $object) {
    $recipient = $recipient . ', me@myemail.com';
    return $recipient;
}

유일한 단점은받는 사람이받는 사람 : 필드에 주소와 자신의 주소를 모두 볼 수 있다는 것입니다.


또는 Steve의 답변을 바탕으로 woocommerce_email_headers필터를 사용할 수 있습니다 . 전달 된 $ object를 사용하면 완성 된 주문 이메일에만이를 적용 할 수 있습니다.

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

function mycustom_headers_filter_function( $headers, $object ) {
    if ($object == 'customer_completed_order') {
        $headers .= 'BCC: My name <my@email.com>' . "\r\n";
    }

    return $headers;
}

이것은 매우 유망한 것으로 보입니다. 이 기능을위한 플러그인을 만들 것을 제안합니까?
Halle

답변을 업데이트하십시오!
Ewout

완벽하게 작동 합니다 . 대단히 감사합니다. 이것은 정말로 위와 아래로 갔다.
Halle

아래의 코드는 "Steve의 답변을 바탕으로 ..."이 WC 2.3에서 작동하지 않는 것 같습니다.
drake035

WC 2.5.5에서 작동하는 코드가 없습니다. 필터 이름이 변경되었는지 알고 있습니까? 감사!
Jaypee 2016 년

9

또한 $ header 변수에 액세스 할 수있는 또 다른 필터가있어 이메일을 숨은 참조로하여 Woocommerce의 고객에게 전달되는 모든 이메일의 사본을 얻을 수 있습니다. 고객이 귀하의 이메일 주소를 볼 수 없다는 점을 제외하면 위의 코드만큼 쉽습니다.

위의 솔루션과 마찬가지로 다음 코드를 추가하십시오.

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

function mycustom_headers_filter_function($headers, $object) {
    $headers = array();
    $headers[] = 'Bcc: your name <me@myemail.com>';
    $headers[] = 'Content-Type: text/html';
    return $headers;
}

이 필터는 모든 $ header에 적용되며 유형을 text / html로 하드 코딩합니다. 콘텐츠 유형 선언에 '/ r / n'을 포함시키지 마십시오. wp_mail ()에 오류가 발생할 수 있습니다. 이는 Woocommerce가 메시지를 보내는 데 사용하는 것입니다.

이 코드를 사용하고 있으므로 Woocommerce v2.0.14를 확인할 수 있습니다. 이전 버전에서도 작동하지만 필터가 얼마나 오래 포함되었는지 확실하지 않습니다.


왜 / r / n을 사용하지 않습니까? 헤더 배열에 / r / n을 추가 할 때만 오류가 발생한다고 생각합니다. 귀하의 예제는 실제로 재사용 할 수있는 컨텐츠 설정을 덮어 씁니다.
Ewout

2
나는 한 SO에 대답 특정 이메일에 BCC를 추가하고 기존의 헤더를 유지하는 방법.
helgatheviking
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.