Antes de hacer esta pregunta, sé que existe una duda (legítima) para responder preguntas aquí sobre los productos Woo, ya que tienen su propio soporte y se debe alentar a sus usuarios a usarlo. Soy un usuario de Woo que paga pero no pude resolver esto con su soporte pagado, y mi pregunta es sobre anular las clases en WP, así que espero que tenga una audiencia justa.
Mi pregunta: cuando se envía un correo electrónico de pedido completado a un cliente, también necesito recibir este correo electrónico, literalmente y automáticamente, exactamente como se envía al cliente en lugar de en otro formato tal como se crea en los diversos PDF de factura complementos para WooCommerce. Puedo lograr esto fácilmente cambiando la siguiente línea en /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() );
leer:
$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() );
Sin embargo, obviamente, un truco como este no sobrevivirá a una actualización. Tengo un tema secundario que anula las plantillas de WooCommerce. ¿Existe algún mecanismo equivalente por el cual pueda anular una clase de una manera similar encapsulada? ¿O puede recomendar un enfoque alternativo (además de configurar el servidor SMTP para enviar todos los correos electrónicos salientes a la segunda dirección) para lograr mi tarea específica de recibir este correo electrónico cuando el cliente también lo recibe?
Respuestas:
En realidad, hay un filtro que puede usar, vea
abstract-wc-email.php
, línea 214:puedes poner lo siguiente en tus functions.php:
El único inconveniente es que el destinatario verá su dirección y la suya propia en el campo Para:.
Alternativamente, basándose en la respuesta de Steve, puede usar el
woocommerce_email_headers
filtro. el $ objeto pasado le permite aplicar esto solo al correo electrónico del pedido completado:fuente
Y hay otro filtro que le dará acceso a la variable $ header que puede permitirle BCC a sus correos electrónicos para que obtenga una copia de cada correo electrónico que va a sus clientes en Woocommerce. Esto es tan fácil como el código anterior, excepto que sus clientes no verán su dirección de correo electrónico.
Al igual que la solución anterior, agregaría el siguiente código:
Este filtro se aplica a todos los encabezados $ y también codifica el tipo como text / html. Tenga en cuenta que no incluye el '/ r / n' en la declaración del tipo de contenido, esto podría causar un error en wp_mail (), que es lo que Woocommerce usa para enviar sus mensajes.
Estoy usando este código para poder verificar que Woocommerce v2.0.14. También debería funcionar en versiones anteriores, pero no estoy seguro de cuánto tiempo se ha incluido el filtro.
fuente