WooCommerce zasílá dva druhy e-mailů. Jsou to e-maily administrátorovi a e-maily zákazníkům.
E-maily zákazníkům se nazývají transakční a vždy jsou vázané na nějakou akci. Většinou na změnu stavu objednávky.
Zákazník tak dostane e-mail, že je jeho objednávka on-hold, processing, nebo completed. Cíleně zde nepřekládám stavy objednávek, protože musí být jednoznačné, kdy je e-mail odeslán.
Občas se stává, že v rámci nastavených procesů uvnitř e-shopu, je žádoucí, aby e-mail o změně stavu objednávky, obdržel i někdo jiný, než zákazník.
Bohužel v nastavení WooCommerce, nemáte možnost přiřazení dodatečného e-mailu k transakčním e-mailům. Naštěstí máme k dispozici hned dva způsoby, jak to obejít.
- filtr woocommerce_email_recipient_customer_{email_id}
- filtr woocommerce_email_headers
U obou filtrů musíte znát id transakčního e-mailu, v kterém chcete změnu udělat. Pro výše zmíněné stavy objednávek to je:
- customer_on_hold_order
- customer_processing_order
- customer_completed_order
Pak to je již jednoduché, jak je vidět z kódu, který jsem umístil na svůj Gist profil https://gist.github.com/Musilda
V prvním případě používáme dynamický hook pro dokončenou objednávku a přidáváme adresáta e-mailu, v druhém případě upravujeme pomocí hooku, který je společný pro všechny e-maily, jeho hlavičku. Zde pak musíme kontrolovat id aktuálního e-mailu, jinak se nám kopie odešle u každého e-mailu.
Další užitečné snippety najdete na stránce Užitečné snippety pro WooCommerce