Ich möchte etwas tun, nachdem WordPress eine E-Mail gesendet hat. Zum Beispiel nach dem Senden der E-Mail "Passwort zurücksetzen" mit der wp_mail()
Funktion.
Ich habe mich ein wenig mit der PHPMailer
Klasse befasst und festgestellt, dass sie eine benutzerdefinierte Aktion unterstützt .
So wird der Rückruf mit der doCallback()
Methode in der Klasse aktiviert .
Es gibt auch einen PHPMailer
Test auf GitHub, bei dem diese Funktion über den callbackAction()
Rückruf verwendet wird.
Wir können es in WordPress einrichten mit:
$phpmailer->action_function = 'wpse_mail_action';
Wo wpse_mail_action()
ist der Aktionsrückruf?
Hier ist ein Beispiel, wie wir dies anwenden können:
/**
* 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';
} );
Jetzt haben wir Zugriff auf den wpse_mail_action
Haken.
Wir könnten dann unseren eigenen Mail-Logger hinzufügen und prüfen, ob die Mails erfolgreich gesendet wurden oder nicht.
Hier ist ein (ungetestetes) Beispiel, wie wir etwas tun können, nachdem "Password Reset" -Postings gesendet wurden:
/**
* 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 );
Hier könnten wir einige weitere Einschränkungen hinzufügen und bei Bedarf andere Aktionen wie den retrieve_password
Hook ausführen .
wp_mail()
möglicherweise nie in CF7 aufgerufen werden. Beachten Sie, dass Plugins von Drittanbietern hier in WPSE nicht zum Thema gehören. @AmirMousavi