Antes de fazer essa pergunta, sei que existe uma hesitação (legítima) em responder aqui sobre os produtos Woo, pois eles têm seu próprio suporte e seus usuários devem ser incentivados a usá-lo. Eu sou um usuário pagante do Woo, mas não consegui resolver isso com o suporte pago, e minha pergunta é sobre a substituição de classes no WP, por isso espero que seja uma audiência justa.
Minha pergunta: quando um email de pedido preenchido é enviado a um cliente, também preciso receber esse email, literal e automaticamente, exatamente como é enviado ao cliente e não em outro formato, como é criado pelos vários PDF da fatura plugins para o WooCommerce. Posso fazer isso facilmente alterando a seguinte linha /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() );
ler:
$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() );
No entanto, obviamente, um hack como esse não sobreviverá a uma atualização. Eu tenho um tema filho que substitui os modelos WooCommerce. Existe algum mecanismo equivalente pelo qual eu possa substituir uma classe de maneira similarmente encapsulada? Ou você pode recomendar uma abordagem alternativa (além de configurar o servidor SMTP para enviar todos os emails enviados para o segundo endereço) para realizar minha tarefa específica de receber esse email quando o cliente também o receber?
Respostas:
Na verdade, existe um filtro que você pode usar, veja a
abstract-wc-email.php
linha 214:você pode colocar o seguinte em seu functions.php:
a única desvantagem é que o destinatário verá seu endereço e o seu no campo Para:.
Como alternativa, com base na resposta de Steve, você pode usar o
woocommerce_email_headers
filtro. o objeto $ passado permite que você aplique isso apenas ao email de pedido concluído:fonte
E há outro filtro que lhe dará acesso à variável $ header que pode permitir que você envie Cco para seus e-mails, para que você obtenha uma cópia carbono de cada e-mail enviado aos seus clientes no Woocommerce. Isso é tão fácil quanto o código acima, exceto que seus clientes não verão seu endereço de e-mail.
Assim como a solução acima, você adicionaria o seguinte código:
Esse filtro se aplica a todos os cabeçalhos $ e também codifica o tipo como texto / html. Observe que você não inclui '/ r / n' na declaração do tipo de conteúdo - isso pode causar um erro em wp_mail () - que é o que o Woocommerce usa para enviar suas mensagens.
Estou usando esse código para verificar o Woocommerce v2.0.14. Também deve funcionar em versões anteriores, mas não sei por quanto tempo o filtro foi incluído.
fonte