ईमेल भेजने के बाद ही कुछ करें


11

मैं वर्डप्रेस भेजने के बाद कुछ करना चाहता हूं। उदाहरण के लिए, wp_mail()फ़ंक्शन का उपयोग करके "रीसेट पासवर्ड" ईमेल भेजने के बाद ।

जवाबों:


14

कार्रवाई कॉलबैक के साथ PHPMailer वर्ग का उपयोग करना:

मैंने PHPMailerकक्षा में कुछ खुदाई की और पाया कि यह एक कस्टम एक्शन का समर्थन करता है ।

यहां बताया गया doCallback()है कि कक्षा में विधि के साथ कॉलबैक कैसे सक्रिय होता है ।

कॉलबैक के माध्यम से इस सुविधा का उपयोग करके GitHub पर एक PHPMailer परीक्षण भी है callbackAction()

हम इसे वर्डप्रेस में सेट कर सकते हैं:

$phpmailer->action_function = 'wpse_mail_action';

wpse_mail_action()कार्रवाई कॉलबैक कहां है।

यहाँ एक उदाहरण है कि हम इसे कैसे लागू कर सकते हैं:

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

अब हमारे पास wpse_mail_actionहुक तक पहुंच है ।

हम तब अपना मेल लकड़हारा जोड़ सकते थे और जाँच सकते थे कि मेल सफलतापूर्वक भेजे गए थे या नहीं।

उदाहरण:

"पासवर्ड रीसेट" पोस्ट भेजे जाने के बाद हम कैसे (कुछ अनकहा) उदाहरण दे सकते हैं:

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

जहां हम कुछ और प्रतिबंध जोड़ सकते हैं और अन्य कार्यों में लपेट सकते हैं यदि retrieve_passwordहुक की तरह, नेकलेसरी।


आप सभी को धन्यवाद। मैंने अभी प्लगइन बनाया है और इसका उपयोग WordPress plugin directory से किया जा सकता है: wordpress.org/plugins/telegram-for-wp
Ameer Mousavi

1
आपका स्वागत है और नए प्लगइन @AmirMousavi
birgire

कॉन्टैक्ट फॉर्म 7 प्लगइन के साथ एक संघर्ष है। यह भेजने का परिणाम प्राप्त नहीं कर सकता है। इसका अजाक्स लोडर हमेशा के लिए घूमता रहा है; तब भी जब ईमेल सफलतापूर्वक भेजा गया हो।
आमिर मौसवी

2
मैंने CF7 के साथ इस विधि का परीक्षण किया और यह उम्मीद के मुताबिक काम किया। यदि ajaxloader हमेशा के लिए घूम रहा है, तो यह असंबंधित जावास्क्रिप्ट / PHP / सर्वर त्रुटियों को इंगित कर सकता है और इसलिए wp_mail()इसे CF7 के भीतर कभी नहीं बुलाया जा सकता है। ध्यान दें कि डब्ल्यूपीएसई पर 3 पार्टी प्लगइन्स विषय से दूर हैं। @AmirMousavi
बिरजायर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.