WooCommerce'de tamamlanmış bir siparişe ikinci bir e-posta adresi ekleme [kapalı]


11

Bu soruyu sormadan önce, Woo ürünleri hakkında soruları yanıtlamak için (meşru) bir tereddüt olduğunu biliyorum çünkü kendi destekleri var ve kullanıcıları bunu kullanmaya teşvik edilmelidir. Ücretli bir Woo kullanıcısıyım ama bunu ücretli destekleriyle çözemedim ve sorum WP'deki sınıfları geçersiz kılmakla ilgili, bu yüzden umarım adil bir duruşma alacak.

Sorum: Tamamlanmış bir sipariş e-postası bir müşteriye gönderildiğinde, bu e-postayı, aynen ve otomatik olarak, tam olarak çeşitli fatura PDF'sinin oluşturduğu gibi başka bir formatta değil, müşteriye gönderildiği gibi almam gerekiyor WooCommerce için eklentiler. Bunu aşağıdaki satırı değiştirerek kolayca başarabilirim /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() );

okumak:

$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() );

Ancak, açıkçası böyle bir hack yükseltme yükseltme olmayacak. WooCommerce şablonlarını geçersiz kılan bir çocuk temam var. Bir sınıfı benzer şekilde kapsüllenmiş bir şekilde geçersiz kılabileceğim eşdeğer bir mekanizma var mı? Veya müşteri de aldığında bu e-postayı alma konusundaki özel görevimi yerine getirmek için alternatif bir yaklaşım önerebilir misiniz (SMTP sunucusunu tüm giden e-postaları ikinci adrese gizlemek için ayarlamanın yanı sıra)?


Daha önce smtp sunucuları olarak gmail / google kullandım ve aslında gönderilen klasördeki e-postaları koyar ... (sizin durumunuzda ne için)
Ewout

Yanıtlar:


22

Aslında abstract-wc-email.php, 214 numaralı satırı kullanabileceğiniz bir filtre var :

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

fonksiyonlarınıza aşağıdakileri koyabilirsiniz. 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;
}

tek dezavantajı, alıcının hem adresinizi hem de kendi adresini Kime: alanında görmesidir.


Alternatif olarak, Steve'in cevabına dayanarak woocommerce_email_headersfiltreyi kullanabilirsiniz . iletilen $ nesnesi bunu yalnızca tamamlanan sipariş e-postasına uygulamanızı sağlar:

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;
}

Bu çok umut verici görünüyor. Bu işlev için bir eklenti oluşturma öneriniz mi?
Halle

cevabı güncelleyin!
Ewout

Mükemmel çalışıyor , çok teşekkür ederim. Bu gerçekten yukarıda ve öteye gitti.
Halle

"Alternatif olarak, Steve'in cevabı üzerine inşa etmek ..." altındaki kod WC 2.3 ile çalışmıyor gibi görünüyor ... Herhangi bir öneri var mı?
drake035

Kodların hiçbiri WC 2.5.5 üzerinde çalışmıyor, filtrenin adını değiştirip değiştirmediklerini biliyor musunuz? Teşekkürler!
Jaypee

9

Ayrıca, Woocommerce'de müşterilerinize giden her e-postanın bir karbon kopyasını almanız için e-postalarınızın BCC'sine izin verebilecek $ header değişkenine erişmenizi sağlayacak başka bir filtre var. Bu, yukarıdaki kod kadar kolaydır, ancak müşterileriniz e-posta adresinizi görmez.

Yukarıdaki çözüm gibi aşağıdaki kodu da eklersiniz:

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;
}

Bu filtre tüm $ başlıkları için geçerlidir ve ayrıca türü metin / html olarak sabit kodlar. İçerik türü bildirimine '/ r / n' eklemediğinizi unutmayın - bu wp_mail () öğesinde bir hataya neden olabilir - Woocommerce mesajlarınızı göndermek için kullanır.

Woocommerce v2.0.14 olduğunu doğrulamak için bu kodu kullanıyorum. Önceki sürümlerde de çalışmalı, ancak filtrenin ne kadar süredir dahil edildiğinden emin değilim.


Neden / r / n kullanılmıyor? Bu hata sadece / r / n üstbilgi dizisine eklediğinizde ortaya çıkıyor düşünüyorum. Örneğiniz aslında yeniden kullanabileceğiniz içerik ayarının üzerine yazar.
Ewout

2
SO'ya yalnızca belirli e-postalara BCC eklemek ve mevcut başlıkları korumak için bir yöntemle yanıt verdim .
helgatheviking
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.