Notificar por correo electrónico cuando un usuario recibe una respuesta a su comentario

Hoy quiero compartir contigo cómo creé un plugin para que los miembros del Club SiliCodeValley reciban una notificación por correo electrónico cada vez que les resuelvo una de sus dudas.

Es decir, si un alumno escribe un comentario en una lección y yo, o cualquier otro alumno, la contesta, en ese instante recibirán un aviso por correo.

Disclaimer: Este tutorial es una píldora didáctica. Soy consciente de que existen plugins para suscribirte a comentarios 😉

Construyamos un plugin juntos:

Una vez hemos planteado el problema que queremos resolver es hora de ponernos manos a la obra y desarrollar un simple plugin.

1- Creamos la cabecera del plugin

Empezamos creando un fichero PHP llamado lesson-reply-notification.php que contendrá todo el código de nuestro plugin y dentro añadimos la cabecera inicial donde le indicaremos: el nombre del plugin, la descripción, autor, url del autor, versión…

2- Buscamos un action hook

Ahora debemos pensar en cómo «interceptar» el momento en que se está produciendo la publicación de un comentario en WordPress. Para ello necesitaremos un action hook y da la casualidad de que WordPress nos ofrece justo la que necesitamos, llamada «wp_insert_comment«.

Esta acción se activa justo después de que un comentario haya sido añadido a la base de datos, siendo el momento idóneo para enviar el email. Por lo tanto, vamos a crear nuestra propia función que la podemos llamar «scv_comment_notification«:

Date cuenta de que en la línea 10 hemos indicado a «add_action» que nuestra función recibirá 2 parámetros: el identificador del comentario que se acaba de insertar en la BBDD y un objeto con el comentario propiamente.

Recapitulemos. En estos momentos hemos creado una función que se ejecutará justo cuando un comentario se inserte en la BBDD, pero todavía nos queda comprobar si ese comentario se trata de una respuesta o no (recuerda que el plugin debe avisar a los usuarios cuando alguien ha respondido a su dudas).

3- Comprobamos si se trata de una respuesta

Para saber si se trata, o no, de una respuesta en la línea 13 comprobamos, en primer lugar, que se trate de un comentario aprobado (de otro modo cuando el usuario acceda a ver la respuesta no podrá verla) y en segundo lugar, si el comentario tiene asociado un comentario «padre» o lo que es lo mismo: que se trate de una respuesta.

4- Obtenemos los datos del comentario padre

En la línea 15 obtenemos el comentario padre y en la línea 16 la dirección de correo de la persona que planteó la duda. Es allí donde enviaremos la notificación.

5- Nos aseguramos de que estamos en una lección

Este plugin sólo debe ejecutarse en el caso de que estemos dentro de una lección, para ello en la línea 19 obtenemos el identificador del post que contiene el comentario padre y en la línea 20 21 comprobamos que se trata del Custom Post Type  «lesson».

6- Comprobamos que no se haya respondido a sí mismo

En la línea 25 comprobamos que el comentario y la respuesta no hayan sido realizados por la misma persona. Si se da el caso finalizamos la ejecución. Ya que no tendría sentido recibir un aviso de su propia respuesta.

7- Enviamos el correo para notificar al usuario

Por fin ha llegado el momento de enviar propiamente el correo. Permíteme resumirte el proceso:

En la línea 46 llamamos a la función de WordPress «wp_mail» que recibe 4 parámertos:

  1. $email: la dirección de email a la que enviaremos el aviso.
  2. $subject: el asunto el correo, definido en la línea 43.
  3. $body: el cuerpo del mensaje, que lo creamos entre la línea 29 y 41.  En este correo incluiremos:
    • El nombre de la persona (línea 31).
    • El nombre de la persona que ha respondido a la duda (línea 33).
    • Un enlace a la propia lección y su título (línea 35).
    • Mostramos la respuesta propiamente (línea 37).
    • Finalmente creamos un enlace directo hacia la respuesta (línea 39).
  4. $headers: las cabeceras del correo, definidas en la línea 44.

Finalmente, podemos definir el correo remitente gracias al filtro «wp_mail_from» en la línea 10.

8- Instalamos y activamos el plugin

¡Y ya tenemos nuestro plugin! Ya podemos subirlo, instalarlo y activarlo 😀. Lo ideal es que trabajemos en una instalación de WordPress local para testear todo el proceso.

Eso es todo por este tutorial, espero que te haya gustado y si quieres seguir aprendiendo diseño y desarrollo WordPress puedes unirte al Club SiliCodeValley a partir de 29€/mes, sin permanencia, con soporte incluido y acceso a la comunidad privada de miembros.

¡Un abrazo!

2 comentarios en «Notificar por correo electrónico cuando un usuario recibe una respuesta a su comentario»

Deja un comentario