X

Cancelar el envío de correos de WordPress sin plugins

Si estas comprobando alguna funcionalidad de tu sitio que implica el envío de correos, es conveniente cancelar el envío de correos y que el usuario no reciba estas pruebas que haces.

 

Generalidades

En un proyecto reciente tuve que trabajar con el envío de correos y comprobar los correos que le llegan al usuario, una manera simple de hacerlo es guardar los correos en el archivo error_log. En este artículo veremos como realizar esto a través de código.

 

Resultado

Como resultado puedes ver los correos enviados como parte del archivo error_log.

 

Código para Cancelar el envío de correos y guardarlos en un Log

Lo primero que tienes que hacer para guardar información en el archivo error_log, es habilitar la depuración de WordPress.
Luego puedes usar el siguiente código PHP como parte del archivo functions.php de tu tema hijo.

// Cancelar todos los correos de WordPress y guardarlos en el Log
add_filter( 'wp_mail', 'dcms_wp_mail', 1, 1 );
add_filter( 'pre_wp_mail', '__return_true', 9999, 2 );

function dcms_wp_mail( $atts ) {
	error_log( print_r( $atts, true ) );

	return $atts;
}

 
En el código anterior:

  • Usamos el Hook de filtro pre_wp_mail retornando verdadero para cancelar la funcionalidad de envío
  • La función __return_true es una función que viene con WordPress y siempre retorna verdadero
  • Establecemos una prioridad de 9999 para que se ejecute después de todo lo que haya programado con ese hook
  • Por otro lado en el Hook de filtro wp_mail, vemos que hace referencia a la función dcms_wp_mail() dentro de esta función simplemente se imprime la información que se enviará en el correo.

 

Conclusión

Como has podido comprobar, es posible cancelar el envío de corros a nivel de código, y además de esto en este artículo hemos aprendido como guardar esa información en el Log para consultarla.

 

Categorías: Core
Etiquetas: funcionalidad