Saya ingin melakukan sesuatu setelah WordPress mengirim email. Misalnya, setelah mengirim email "Atur Ulang Kata Sandi" menggunakan wp_mail()
fungsi.
Saya melakukan beberapa penggalian ke dalam PHPMailer
kelas dan menemukan bahwa itu mendukung tindakan kustom .
Begini cara callback diaktifkan dengan doCallback()
metode di kelas.
Ada juga PHPMailer
tes pada GitHub menggunakan fitur ini melalui callbackAction()
panggilan balik.
Kita dapat mengaturnya di WordPress dengan:
$phpmailer->action_function = 'wpse_mail_action';
di mana wpse_mail_action()
action callback.
Berikut ini contoh bagaimana kami dapat menerapkan ini:
/**
* 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';
} );
Sekarang kami memiliki akses ke wpse_mail_action
hook.
Kami kemudian dapat menambahkan logger surat kami sendiri dan memeriksa apakah surat berhasil dikirim atau tidak.
Berikut adalah contoh (yang belum diuji) bagaimana kami dapat melakukan sesuatu setelah posting "Reset Kata Sandi" dikirim:
/**
* 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 );
di mana kita bisa menambahkan beberapa batasan lebih lanjut dan memasukkan ke dalam tindakan lain jika perlu, seperti retrieve_password
kait.
wp_mail()
mungkin tidak pernah dipanggil dalam CF7. Perhatikan bahwa plugin pihak ke-3 berada di luar topik di WPSE. @AmirMousavi