Oferta SiteGround Black Friday

Cómo añadir contenido personalizado a los correos electrónicos de WooCommerce

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…

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:

  1. 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.
  2. 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&section=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&section=wc_email_customer_completed_order.

¿Dónde meto el código?

El código puedes meterlo en 2 posibles ubicaciones:

  1. 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.
  2. 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…

texto personalizado en email woocommerce

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 4.9 / 5. Total de votos: 9

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

4 comentarios en “Cómo añadir contenido personalizado a los correos electrónicos de WooCommerce”

  1. 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?

  2. Gustavo Woltmann

    Esto lo estaba buscando desde hace tiempo y no lo había encotrado tan bien explicado. Gracias por el material. Gustavo Woltmann

  3. 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio