Sebelum saya mengajukan pertanyaan ini, saya tahu ada keraguan (sah) untuk menjawab pertanyaan di sini tentang produk Woo karena mereka memiliki dukungan mereka sendiri dan pengguna mereka harus didorong untuk menggunakannya. Saya adalah pengguna Woo yang membayar tetapi tidak bisa menyelesaikan ini dengan dukungan berbayar mereka, dan pertanyaan saya adalah tentang mengesampingkan kelas di WP jadi saya berharap ini akan mendapatkan pendengaran yang adil.
Pertanyaan saya: ketika email pesanan selesai dikirim ke pelanggan, saya juga perlu menerima email ini, kata demi kata dan secara otomatis, persis seperti yang dikirim ke pelanggan daripada dalam beberapa format lain seperti dibuat oleh berbagai faktur PDF plugin untuk WooCommerce. Saya dapat dengan mudah mencapai ini dengan mengubah baris berikut di /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() );
untuk membaca:
$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() );
Namun, jelas peretasan seperti ini tidak akan selamat dari peningkatan. Saya memiliki tema anak yang menimpa templat WooCommerce. Apakah ada mekanisme setara yang dengannya saya dapat mengesampingkan kelas dengan cara yang sama dienkapsulasi? Atau bisakah Anda merekomendasikan pendekatan alternatif (selain mengatur server SMTP untuk mengirim semua email keluar ke alamat kedua) untuk menyelesaikan tugas khusus saya menerima email ini ketika pelanggan juga menerimanya?
Jawaban:
Sebenarnya ada filter yang bisa Anda gunakan, lihat
abstract-wc-email.php
, baris 214:Anda dapat memasukkan yang berikut ini di functions.php Anda:
satu-satunya kelemahan adalah bahwa penerima akan melihat alamat Anda & alamatnya sendiri di bidang Ke :.
Atau, berdasarkan jawaban Steve, Anda dapat menggunakan
woocommerce_email_headers
filter. $ object berlalu memungkinkan Anda untuk hanya menerapkan ini ke email pesanan selesai:sumber
Dan ada filter lain yang akan memberi Anda akses ke variabel $ header yang memungkinkan Anda untuk BCC email Anda sehingga Anda mendapatkan salinan karbon dari setiap email yang masuk ke klien Anda di Woocommerce. Ini semudah kode di atas kecuali klien Anda tidak akan melihat alamat email Anda.
Sama seperti solusi di atas Anda akan menambahkan kode berikut:
Filter ini berlaku untuk semua $ header dan juga kode keras jenisnya sebagai teks / html. Perhatikan bahwa Anda tidak menyertakan '/ r / n' dalam deklarasi tipe konten - ini dapat menyebabkan kesalahan di wp_mail () - yang digunakan Woocommerce untuk mengirim pesan Anda.
Saya menggunakan kode ini sehingga saya dapat memverifikasi bahwa Woocommerce v2.0.14. Seharusnya juga berfungsi di versi yang lebih lama tetapi tidak yakin berapa lama filter telah disertakan.
sumber