gradient

Cuando construimos un plugin o plantilla en WordPress es posible que necesitemos añadir una funcionalidad para el envió de correo electrónico. Para enviar emails, WordPress nos facilita la función wp_mail() que detallaremos a continuación:

Definición

Para enviar emails en WordPress necesitaremos de la siguiente función:

wp_mail( $to, $subject, $message, $headers, $attachments );

$to = Arreglo [] o string con direcciones de correo electrónico separados por comas para enviar mensajes (Requerido) .

$subject = Tipo string, asunto del correo (Requerido)

$message = Tipo string, mensaje del correo (Requerido)

$headers = Tipo string, cabeceras adicionales. valor por defecto “” / ’’. (Opcional)

$attachments = Arreglo [] o string, enlaces a archivos adjuntos. (Opcional)

Ejemplo 1: Email sencillo (solo texto)

La estructura básica para enviar un correo es la siguiente:

$to = "[email protected]";
$subject = 'Asunto del correo';
$message = 'Hola mundo';
wp_mail( $to, $subject, $message );

Si deseas que tu correo tenga contenido HTML, deberás añadir las siguientes cabeceras/headers:

$to = "[email protected]";
$headers = array('Content-Type: text/html; charset=UTF-8'); //headers con soporte HTML
$subject = 'Asunto del correo';
$message = '<h2>Hola mundo</h2>';
wp_mail( $to, $subject, $message, $headers ); //Agregado $headers como parámetro

Ejemplo 2: Email sencillo con multiples destinatarios

Usando string (cadena) de texto

$to = "[email protected], [email protected]";
$headers = array('Content-Type: text/html; charset=UTF-8');
$subject = 'Asunto del correo';
$message = 'Hola mundo';
wp_mail( $to, $subject, $message, $headers ); 

Usando Array

$to = ['[email protected]', '[email protected]'];
$headers = array('Content-Type: text/html; charset=UTF-8'); 
$subject = 'Asunto del correo';
$message = 'Hola mundo';
wp_mail( $to, $subject, $message, $headers ); 

Ejemplo 3: Email con plantilla HTML

Hacemos uso de las funciones ob_start(), ob_get_contents() y ob_end_clean() para encapsular el contenido de la plantilla en cuestión

$to = "[email protected]";
$headers = array('Content-Type: text/html; charset=UTF-8'); 
$subject = 'Asunto del correo';
ob_start();
include("path/to/file/template.html");

$message = ob_get_contents();
ob_end_clean();
wp_mail( $to, $subject, $message, $headers ); 

NOTA: para obtener el enlace al archivo podemos utilizar varios métodos:

  1. get_template_directory() . ‘/template.php’ Si se trata de un archivo dentro de la plantilla
  2. plugin_dir_path( DIR ) . ‘template.php’ Si se trata de un archivo dentro de un plugin
  3. Alternativamente si trabajas con plugins puedes hacer uso de las funciones plugins_url() o plugin_dir_url()

Ejemplo 4: Email con archivos adjuntos

En este caso necesitamos proveer de la URL al archivo que enviaremos y añadirlo al arreglo de attachments en la función wp_mail()


$file = "ruta-a-tu-archivo/nombre-del-archivo.pdf" //Ruta del archivo

$to = "[email protected]";
$headers = array('Content-Type: text/html; charset=UTF-8'); 
$subject = 'Asunto del correo';
$message = 'Hola mundo';
wp_mail( $to, $subject, $message , $headers, array($file));

Para mas información te dejo los enlaces a la documentación de WordPress y su función

Espero que estos ejemplos hayan sido de tu utilidad, comparte la publicación con alguien que la necesite y recuerda que puedes encontrar mas artículos como este en https://pixonauta.com/snippets/

Angel Mavare

Apasionado por la tecnología y los medios digitales, Ingeniero de software, programador, aficionado a la ilustración y co-fundador de pixonauta.com.

Editado el: 6 julio, 2022
Suscribirse
Notificar a
guest

0 Comentarios
Inline Feedbacks
Ver todos los comentarios