Faça algo depois de enviar e-mail

11

Eu quero fazer algo depois que o WordPress enviou um email. Por exemplo, depois de enviar o email "Reset Password" usando a função wp_mail() .

    
por Ameer Mousavi 09.06.2015 / 13:39

1 resposta

13

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.

    
por birgire 09.06.2015 / 14:19

Tags