E-posta gönderdikten sonra bir şeyler yapın


11

WordPress bir e-posta gönderdikten sonra bir şey yapmak istiyorum. Örneğin, wp_mail()işlevi kullanarak "Parolayı Sıfırla" e-postası gönderdikten sonra .

Yanıtlar:


14

PHPMailer sınıfını bir eylem geri aramayla kullanma:

PHPMailerSınıfa biraz kazma yaptım ve özel bir eylemi desteklediğini buldum .

İşte geri arama ile aktive nasıl doCallback()sınıfta yöntemle.

GitHub'da bu özelliği geri arama ile kullanarak da bir PHPMailer test var callbackAction().

WordPress ile aşağıdakileri kurabiliriz:

$phpmailer->action_function = 'wpse_mail_action';

wpse_mail_action()eylem geri çağırma nerede .

İşte bunu nasıl uygulayabileceğimize bir örnek:

/**
 * 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';
} );

Şimdi wpse_mail_actionkancaya erişebiliyoruz .

Daha sonra kendi posta kaydedicimizi ekleyebilir ve postaların başarıyla gönderilip gönderilmediğini kontrol edebiliriz.

Misal:

"Parola Sıfırlama" gönderileri gönderildikten sonra bir şeyi nasıl yapabileceğimizi gösteren (denenmemiş) bir örnek:

/**
 * 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 );

daha fazla kısıtlama ekleyebilir ve gerektiğinde retrieve_passwordkanca gibi diğer eylemlere girebiliriz .


Teşekkür ederim. Eklentiyi ve şimdi wordpress eklenti dizininden erişilebilir hale getirdim: wordpress.org/plugins/telegram-for-wp
Ameer Mousavi

1
@AmirMousavi
birgire

Contact Form 7 eklentisi ile bir çakışma var. Gönderme sonucunu alamaz. Ajax yükleyicisi sonsuza dek dönüyor; e-posta başarıyla gönderilse bile.
Ameer Mousavi

2
Bu yöntemi CF7 ile test ettim ve beklendiği gibi çalıştı. Ajaxloader sonsuza kadar dönüyorsa, ilgisiz javascript / PHP / Server hatalarını wp_mail()gösterebilir ve bu nedenle CF7 içinde asla çağrılamaz. Üçüncü taraf eklentilerin WPSE'de burada konu dışı olduğunu unutmayın. @AmirMousavi
birgire
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.