Avant de poser cette question, je sais qu'il y a une hésitation (légitime) à répondre ici aux questions sur les produits Woo car ils ont leur propre support et leurs utilisateurs devraient être encouragés à l'utiliser. Je suis un utilisateur payant de Woo mais je n'ai pas pu résoudre ce problème avec leur support payant, et ma question concerne la redéfinition des classes dans WP, donc j'espère qu'il sera entendu de manière équitable.
Ma question: lorsqu'un e-mail de commande terminé est envoyé à un client, je dois également recevoir cet e-mail, mot pour mot et automatiquement, exactement comme il est envoyé au client plutôt que dans un autre format tel que celui créé par les différentes factures PDF plugins pour WooCommerce. Je peux très facilement accomplir cela en modifiant la ligne suivante dans /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() );
lire:
$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() );
Cependant, évidemment, un hack comme celui-ci ne survivra pas à une mise à niveau. J'ai un thème enfant qui remplace les modèles WooCommerce. Existe-t-il un mécanisme équivalent par lequel je peux remplacer une classe d'une manière similaire encapsulée? Ou pouvez-vous recommander une autre approche (en plus de définir le serveur SMTP pour que tous les e-mails sortants soient affectés à la deuxième adresse) pour accomplir ma tâche spécifique de réception de cet e-mail lorsque le client le reçoit également?
Réponses:
Il y a en fait un filtre que vous pouvez utiliser, voyez
abstract-wc-email.php
, ligne 214:vous pouvez mettre ce qui suit dans votre functions.php:
le seul inconvénient est que le destinataire verra à la fois votre adresse et la sienne dans le champ À :.
Alternativement, en s'appuyant sur la réponse de Steve, vous pouvez utiliser le
woocommerce_email_headers
filtre. l'objet $ passé vous permet de l'appliquer uniquement à l'e-mail de commande terminé:la source
Et il existe un autre filtre qui vous donnera accès à la variable $ header qui peut vous permettre de BCC vos e-mails afin que vous obteniez une copie conforme de chaque e-mail qui va à vos clients sur Woocommerce. C'est aussi simple que le code ci-dessus, sauf que vos clients ne verront pas votre adresse e-mail.
Tout comme la solution ci-dessus, vous ajouteriez le code suivant:
Ce filtre s'applique à tous les en-têtes $ et également aux codes en dur du type texte / html. Notez que vous n'incluez pas le '/ r / n' dans la déclaration de type de contenu - cela pourrait provoquer une erreur dans wp_mail () - qui est ce que Woocommerce utilise pour envoyer vos messages.
J'utilise ce code pour pouvoir vérifier que Woocommerce v2.0.14. Devrait également fonctionner dans les versions antérieures mais ne sait pas combien de temps le filtre a été inclus.
la source