Chcę coś zrobić po wysłaniu wiadomości e-mail przez WordPress. Na przykład po wysłaniu wiadomości e-mail „Zresetuj hasło” za pomocą wp_mail()
funkcji.
Zagłębiłem się w PHPMailer
klasę i odkryłem, że obsługuje niestandardową akcję .
Oto jak wywołanie zwrotne jest aktywowane za pomocą doCallback()
metody w klasie.
Istnieje również PHPMailer
test na GitHub przy użyciu tej funkcji za pośrednictwem callbackAction()
wywołania zwrotnego.
Możemy to skonfigurować w WordPress za pomocą:
$phpmailer->action_function = 'wpse_mail_action';
gdzie wpse_mail_action()
jest wywołanie zwrotne akcji.
Oto przykład, w jaki sposób możemy to zastosować:
/**
* 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';
} );
Teraz mamy dostęp do wpse_mail_action
haka.
Następnie moglibyśmy dodać własny rejestrator poczty i sprawdzić, czy wiadomości zostały pomyślnie wysłane, czy nie.
Oto (niesprawdzony) przykład, w jaki sposób możemy coś zrobić po wysłaniu wpisów „Resetowanie hasła”:
/**
* 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 );
gdzie moglibyśmy dodać dalsze ograniczenia i zawinąć w inne działania, jeśli to konieczne, takie jak retrieve_password
hak.
wp_mail()
może nigdy nie zostać wywołany w CF7. Zauważ, że wtyczki innych firm nie są tutaj tematem na WPSE. @AmirMousavi