Quiero hacer algo después de que WordPress envió un correo electrónico. Por ejemplo, después de enviar el correo electrónico "Restablecer contraseña" con la función wp_mail()
.
Quiero hacer algo después de que WordPress envió un correo electrónico. Por ejemplo, después de enviar el correo electrónico "Restablecer contraseña" con la función wp_mail()
.
Hice algunas excavaciones en el PHPMailer
Categoría descubrió que admite una acción personalizada .
Aquí está la forma en que se activa la llamada a href="https://github.com/WordPress/WordPress/blob/cb39d03501aae82c7f16f67c93ab0452ef870c46/wp-includes/class-phpmailer.php#L3231"> doCallback()
método en la clase.
También hay un PHPMailer
test en el estado de juego en el último momento. callbackAction()
callback.
Podemos configurarlo en WordPress con:
$phpmailer->action_function = 'wpse_mail_action';
donde wpse_mail_action()
es la devolución de llamada de la acción.
Aquí hay un ejemplo de cómo podemos aplicar esto:
/**
* Custom PHPMailer action callback
*/
function wpse_mail_action( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
do_action( 'wpse_mail_action', $is_sent, $to, $cc, $bcc, $subject, $body, $from );
return $is_sent; // don't actually need this return!
}
/**
* Setup a custom PHPMailer action callback
*/
add_action( 'phpmailer_init', function( $phpmailer )
{
$phpmailer->action_function = 'wpse_mail_action';
} );
Ahora tenemos acceso al gancho wpse_mail_action
.
Luego podríamos agregar nuestro propio registrador de correo y verificar si los correos se enviaron con éxito o no.
Aquí hay un ejemplo (no probado) de cómo podríamos hacer algo después de que se envíen las publicaciones de "Restablecimiento de contraseña":
/**
* Do something after the "Password Reset" post has been successfully sent:
*/
add_action( 'wpse_mail_action', function( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
if( $is_sent && false !== stripos( $subject, 'Password Reset' ) )
// do stuff
}, 10, 7 );
donde podríamos agregar algunas restricciones adicionales y envolverlas en otras acciones si es necesario, como el retrieve_password
hook.