Прежде чем я задам этот вопрос, я знаю, что есть (законное) сомнение ответить здесь на вопросы о продуктах 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-сервере значения bcc для всех исходящих писем на второй адрес) для выполнения моей конкретной задачи получения этого письма, когда клиент также получает его?
Ответы:
На самом деле есть фильтр, который вы можете использовать, смотрите
abstract-wc-email.php
строку 214:Вы можете поместить следующее в ваши functions.php:
Единственным недостатком является то, что получатель будет видеть ваш адрес и его собственный в поле To :.
Кроме того, основываясь на ответе Стива, вы можете использовать
woocommerce_email_headers
фильтр. переданный объект $ позволяет применить это только к электронному письму с завершенным заказом:источник
И есть еще один фильтр, который даст вам доступ к переменной $ header, которая может позволить вам BCC ваши электронные письма, чтобы вы получали точную копию каждого электронного письма, которое отправляется вашим клиентам в Woocommerce. Это так же просто, как приведенный выше код, за исключением того, что ваши клиенты не увидят ваш адрес электронной почты.
Как и в приведенном выше решении, вы добавили бы следующий код:
Этот фильтр применяется ко всем $ заголовкам, а также жестким кодам типа как text / html. Обратите внимание, что вы не включаете / r / n в объявление типа контента - это может привести к ошибке в wp_mail () - именно это Woocommerce использует для отправки ваших сообщений.
Я использую этот код, чтобы я мог проверить, что Woocommerce v2.0.14. Должно также работать в более ранних версиях, но не уверен, как долго фильтр был включен.
источник