Hace poco me surgió la necesidad de añadir algo de contenido personalizado a los correos electrónicos que manda WooCommerce a los clientes, pues en uno de los correos tenía que enviar un texto y un enlace.
A ver, te lo cuento en detalle…
Índice de contenidos
La necesidad
Resulta que uno de los servicios que ofrezco es el de consultorías WordPress online. La reserva es sencilla, utilizo WooCommerce y mi plugin de reservas favorito, que además crea automáticamente la cita en Google Calendar, hasta ahí todo bien.
Pero el problema me venía porque las consultorías las hago con Zoom, y tras crearse la reserva automática, tenía que agendar la cita en Zoom, crear el enlace, y editar la cita en Google Calendar para enviárselo al cliente. Demasiado trabajo manual, y yo soy mucho de automatizar.
Pues bien, resulta que hablando con Tesacu me dijo ¿por qué no usas siempre el mismo enlace de Zoom? Y tiene razón, pues se puede, así que lo único que me faltaba era personalizar los correos de WooCommerce y añadir el enlace único, y quizás algo de texto.
¡Manos a la obra!
La solución
Ante este reto podría optar por 2 maneras de conseguirlo:
- Modificar las plantillas de email de WooCommerce: El proceso pasa por copiar la plantilla afectada a la misma ruta en tu tema activo y ahí ya modificar el PHP a tu gusto.
- Crear un gancho de acción que añadiese mi texto y enlace personalizados en el email de WooCommerce enviado al cliente.
Claramente me decidí por el segundo método, porque no depende del tema, y es un proceso más rápido y limpio.
El código que utilicé es este:
// Añadir texto y enlace personalizados a email de cliente antes de la tabla del pedido
add_action( 'woocommerce_email_before_order_table', 'ayudawp_contenido_personalizado_email_cliente', 20, 4 );
function ayudawp_contenido_personalizado_email_cliente( $order, $sent_to_admin, $plain_text, $email ) {
if ( $email->id == 'customer_completed_order' ) {
echo '<h2>¡Gracias por reservar la consultoría!</h2><p>Para acceder a la consultoría online el día y hora reservados accede a la siguiente URL y conecta tu sonido y cámara: https://zoom.us/j/8899665544?pwd=abc123def456ghi789</p>';
}
}
¿Cómo adapto el código a mis necesidades?
Del código de ejemplo, además de lo más obvio, que es personalizar el mensaje del echo
, quizás lo más importante es decidir a qué correo(s) electrónico(s) se añadirá.
Para ello puedes cambiar el $email->id == 'id_del_email' )
cambiando o añadiendo al del ejemplo (customer_completed_order
) el/los id(s) de los correos a los que quieres que se adjunte, o sea:
if ( $email->id == 'cancelled_order' ) {} //pedido cancelado
if ( $email->id == 'customer_processing_order' ) {} //pedido procesándose
if ( $email->id == 'customer_invoice' ) {} //factura del cliente
if ( $email->id == 'customer_new_account' ) {} //nueva cuenta de cliente
if ( $email->id == 'customer_note' ) {} //notas al cliente
if ( $email->id == 'customer_on_hold_order' ) {} //pedido en espera
if ( $email->id == 'customer_refunded_order' ) {} //reembolso
if ( $email->id == 'customer_reset_password' ) {} //restablecer contraseña
if ( $email->id == 'failed_order' ) {} //pedido fallido
if ( $email->id == 'new_order' ) {} //nuevo pedido
¿Y dónde se ven los IDs de los emails?
Pues cada correo de WooCommerce tiene uno, y lo ves al editar cualquiera de ellos en los ajustes de WooCommerce. Solo tienes que fijarte en la URL del correo que has abierto para modificar, que será del tipo: https://midominio.es/wp-admin/admin.php?page=wc-settings&tab=email§ion=wc_email_ID_DEL_EMAIL
.
Por ejemplo, el ID del que he utilizado en el código se sacaría de la URL https://midominio.es/wp-admin/admin.php?page=wc-settings&tab=email§ion=wc_email_customer_completed_order
.
¿Dónde meto el código?
El código puedes meterlo en 2 posibles ubicaciones:
- En el archivo functions.php del tema activo: Si es un tema hijo no hay problema, la única pega es que dependes del tema para que funcione el código.
- En tu propio plugin de personalizaciones: Independiente del tema.
Creo que está claro que mi opción favorita es la segunda, pero funcionar funciona en cualquiera de ellas.
¿Funciona?
Pues claro, en el/los emails que hayas incorporado su ID en el código tu contenido personalizado se añadirá antes de la tabla de detalle del pedido, como puedes ver en esta captura…
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Articulo super útil! Por cierto, hay alguna forma de editar el estilo css del correo que recibe el cliente? O eso depende del navegador del que se haya abierto el correo?
Claro, puedes editar el CSS existente en el personalizador, o incluso crear nuevas clases o IDs y usarlas en tus correos aplicando el CSS inline en las cadenas con HTML.
Esto lo estaba buscando desde hace tiempo y no lo había encotrado tan bien explicado. Gracias por el material. Gustavo Woltmann
Buenas, muchas gracias por esta maravilla,
El único inconveniente que veo que o que me pasa, que en el PEDIDO COMPLETADO, no me incluye lo que indique en la función. Tengo varias, una para pedido procesado(pago tarjeta crédito), otra para pedido en espera (transf. bancaria) y tengo otra función para el PEDIDO COMPLETADO ,pero esté es el que no me funciona. no se si es porque como el estado del pedido se cambia directamente en el propio apartado en sí del pedido correspondiente.