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

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

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

Я немного 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 .