Quero fazer algo depois que o WordPress enviou um email. Por exemplo, após enviar o e-mail "Redefinir senha" usando a wp_mail()
função
Quero fazer algo depois que o WordPress enviou um email. Por exemplo, após enviar o e-mail "Redefinir senha" usando a wp_mail()
função
Respostas:
Pesquisei na PHPMailer
classe e descobri que ela suporta uma ação personalizada .
Veja como o retorno de chamada é ativado com o doCallback()
método na classe
Também há um PHPMailer
teste no GitHub usando esse recurso por meio do callbackAction()
retorno de chamada.
Podemos configurá-lo no WordPress com:
$phpmailer->action_function = 'wpse_mail_action';
Onde wpse_mail_action()
está o retorno de chamada da ação.
Aqui está 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
gancho.
Poderíamos então adicionar nosso próprio registrador de mensagens e verificar se as mensagens foram enviadas com êxito ou não.
Aqui está um exemplo (não testado) de como poderíamos fazer algo após o envio das postagens de "Redefinição de senha":
/**
* 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 outras restrições e envolver outras ações, se necessário, como o retrieve_password
gancho.
wp_mail()
nunca poderá ser chamado no CF7. Observe que os plug-ins de terceiros estão fora do tópico aqui no WPSE. @AmirMousavi