WordPress

Permitir HTML en los correos de WordPress

02/11/2020 Blog

Estoy seguro que sabes que la función wp_mail se encarga, en WordPress, del envío de correos desde la propia plataforma.

Pero wp_mail por sí solo no sé si te resultará útil al 100% ya que no te deja meter en su contenido etiquetas HTML. Es decir, si lo que necesitas es mandar una frase como «Hola, querido lector.» al correo «prueba@prueba.es» tienes que hacer lo siguiente:

$cabecera = 'From: joseacat.io <noreply@joseacat.io>' . "\r\n\\";
$cuerpo_correo = "Hola, querido lector.";
wp_mail( 'prueba@prueba.es', 'Asunto del correo', $cuerpo_correo, $cabecera );

El problema, como digo, es cuando quieres meter un contenido más ‘elaborado’ y etiquetarlo con HTML. Por ejemplo si quieres poner:


Hola, querido lector.

Este es el contenido de tu correo.


En ese caso deberías utilizar:

$cabecera = 'From: joseacat.io <noreply@joseacat.io>' . "\r\n\\";
$cuerpo_correo = "<h1>Hola, querido lector.</h1><p>Este es el cuerpo de tu correo.</p>";
wp_mail( 'prueba@prueba.es', 'Asunto del correo', $cuerpo_correo, $cabecera );

Y, para que la función sepa interpretar ese contenido HTML, además, deberás añadir este action en el functions.php de tu tema o en tu plugin:

/**
 Permite meter etiquetas HTML en los correos enviados mediante wp_mail
 @return string
 */
 function permitir_html_en_wp_mail(){
 return "text/html";
 }
 add_filter( 'wp_mail_content_type','permitir_html_en_wp_mail' ); 

Espero que os ayude en vuestro desarrollo. 😉