Я хочу зробити щось після того, як WordPress надіслав електронний лист. Наприклад, після відправки електронного листа "Скинути пароль" за допомогою wp_mail()
функції.
Я хочу зробити щось після того, як WordPress надіслав електронний лист. Наприклад, після відправки електронного листа "Скинути пароль" за допомогою wp_mail()
функції.
Відповіді:
Я трохи перекопався до 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
гачок.
wp_mail()
ніколи не може викликатися в CF7. Зауважте, що додатки сторонніх розробників тут поза темою на WPSE. @AmirMousavi