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.