Usando a classe PHPMailer com um callback de ação:
Eu investiguei a classe PHPMailer
descobriu que ele suporta uma ação personalizada .
Veja como a chamada de retorno é ativada com o < um método href="https://github.com/WordPress/WordPress/blob/cb39d03501aae82c7f16f67c93ab0452ef870c46/wp-includes/class-phpmailer.php#L3231"> doCallback()
na classe.
Há também um PHPMailer
teste no GitHub usando esse recurso por meio do callbackAction()
callback.
Podemos configurá-lo no WordPress com:
$phpmailer->action_function = 'wpse_mail_action';
em que wpse_mail_action()
é o retorno de chamada de ação.
Veja um exemplo de como podemos aplicar isso:
/**
* 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';
} );
Agora temos acesso ao wpse_mail_action
hook.
Poderíamos então adicionar nosso próprio registrador de e-mail e verificar se os e-mails foram enviados com sucesso ou não.
Exemplo:
Veja um exemplo (não testado) de como poderíamos fazer algo depois que as postagens de "Redefinição de senha" fossem enviadas:
/**
* 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 );
onde poderíamos adicionar algumas restrições adicionais e incluir outras ações, se necessário, como o retrieve_password
hook.