Сделайте что-нибудь после отправки электронной почты


Я хочу что-то сделать после того, как WordPress отправил электронное письмо. Например, после отправки электронного письма "Сбросить пароль" с помощью функции wp_mail().

Author: Pieter Goosen, 2015-06-09

1 answers

Использование класса PHPMailer с обратным вызовом действия:

Я немного покопался в PHPMailer класс и обнаружил, что он поддерживает пользовательское действие .

Вот как активируется обратный вызов с помощью doCallback() метод в классе.

Также есть PHPMailer протестируйте на GitHub, используя эту функцию с помощью обратного вызова callbackAction().

Мы можем настроить его в WordPress с помощью:

$phpmailer->action_function = 'wpse_mail_action';

Где wpse_mail_action() - действие обратный вызов.

Вот пример того, как мы можем это применить:

/**
 * 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';
} );

Теперь у нас есть доступ к крючку wpse_mail_action.

Затем мы могли бы добавить наш собственный регистратор почты и проверить, были ли письма успешно отправлены или нет.

Пример:

Вот (непроверенный) пример того, как мы могли бы что-то сделать после отправки сообщений "Сброс пароля":

/**
 * 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 );

Где мы могли бы добавить некоторые дополнительные ограничения и при необходимости включить другие действия, например, крючок retrieve_password.

 14
Author: birgire, 2015-06-11 14:39:59