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