Intereting Posts
Язык уведомлений по электронной почте из WordPress эхо-пользовательские поля с AJAX наилучшая практика по продвижению промежуточной разработки (база данных / загрузки) на живой сервер Как остановить wp-editor (), перезаписывая мой HTML? сортировать теги по идентификатору тега в панели администратора Как сделать этот короткий код для постсодержащего контента Вручную вызвать элемент wp_schedule_event? Добавить srcset и размеры для более старых загрузок? Как установить имя класса для тега <li> в меню WordPress? wp_set_current_user (удаленное ведение журнала) не работает на сервере Автоматическое добавление последнего сообщения в карусель / слайдер Почему я получаю это странное поведение WP_Query, пытаясь выбрать сообщения с определенным тегом? Janrain / Simple Modal в перенаправленном домене переадресация https (с .htaccess) переадресацией Фильтр 'nav_menu_css_class' принимает 2 или 3 аргумента?

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

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

Solutions Collecting From Web of "Сделайте что-то после отправки электронной почты"

Использование класса 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 .