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
- Ejemplo 1: Email sencillo (solo texto)
- Ejemplo 2: Email sencillo con múltiples destinatarios
- Ejemplo 3: Email con plantilla .html
- Ejemplo 4: Email con archivos adjuntos
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:
- get_template_directory() . ‘/template.php’ Si se trata de un archivo dentro de la plantilla
- plugin_dir_path( DIR ) . ‘template.php’ Si se trata de un archivo dentro de un plugin
- 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/