Tun Sie etwas nach dem Senden von E-Mails

Ich möchte etwas tun, nachdem WordPress eine E-Mail gesendet hat. Zum Beispiel nach dem Senden der E-Mail “Reset Password” mit der function wp_mail() .

Solutions Collecting From Web of "Tun Sie etwas nach dem Senden von E-Mails"

Verwenden der PHPMailer-class mit einem Aktionsrückruf:

Ich habe etwas in die PHPMailer class PHPMailer und festgestellt, dass sie eine benutzerdefinierte Aktion unterstützt .

So wird der callback mit der Methode doCallback() in der class aktiviert.

Es gibt auch einen PHPMailer Test auf GitHub, der diese function über den callbackAction() -callback verwendet.

Wir können es in WordPress einrichten mit:

 $phpmailer->action_function = 'wpse_mail_action'; 

Dabei ist wpse_mail_action() der Aktionsrückruf.

Hier ist ein Beispiel, wie wir das 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 Hook.

Wir könnten dann unseren eigenen Mail-Logger hinzufügen und überprüfen, ob die Mails erfolgreich versendet wurden oder nicht.

Beispiel:

Hier ist ein (ungetestetes) Beispiel, wie wir etwas tun könnten, nachdem “Password Reset” Beiträge 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 weitere Einschränkungen hinzufügen und ggf. in andere Aktionen wie den Hook retrieve_password einbinden.