2015-04-28 11 views
6

मैं एक प्लगइन मैं लिख रहा हूँ कि मैं संपर्क प्रपत्र के साथ बातचीत करना चाहते हैं 7. मेरी प्लगइन में मैं निम्नलिखित कार्रवाई ADD_ACTIONकैसे संपर्क प्रपत्र 7 में हुक करने से पहले भेजें

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else"); 

function wpcf7_do_something_else(&$wpcf7_data) { 

    // Here is the variable where the data are stored! 
    var_dump($wpcf7_data); 

    // If you want to skip mailing the data, you can do it... 
    $wpcf7_data->skip_mail = true; 

} 

मैं संपर्क प्रस्तुत जोड़ लिया है फॉर्म लेकिन add_action मैंने कुछ भी नहीं किया था। मुझे यकीन है कि मेरा प्लगइन अवरोध कैसे करें या कुछ करें जब संपर्क फ़ॉर्म 7 कुछ करता है। कोई भी, यह कैसे करें इस पर मदद करें?

उत्तर

15

मुझे ईमेल को भेजने से रोकने के लिए ऐसा करना पड़ा। आशा करता हूँ की ये काम करेगा।

/* 
    Prevent the email sending step for specific form 
*/ 
add_action("wpcf7_before_send_mail", "wpcf7_do_something_else"); 
function wpcf7_do_something_else($cf7) { 
    // get the contact form object 
    $wpcf = WPCF7_ContactForm::get_current(); 

    // if you wanna check the ID of the Form $wpcf->id 

    if (/*Perform check here*/) { 
     // If you want to skip mailing the data, you can do it... 
     $wpcf->skip_mail = true;  
    } 

    return $wpcf; 
} 

इस कोड को मानता है कि आपके CF7 का नवीनतम संस्करण चला अपने कोड के ऊपर जब वे चले गए और कोड के कुछ रिफैक्टरिंग किया एक दो महीने पहले तक काम करने के लिए उपयोग किया जाता है कि।

+1

धन्यवाद मस्क, यह पूरी तरह से किया! उसने एक और प्लगइन में हेरफेर करने के तरीके पर मेरे प्रश्न का भी उत्तर दिया! – Naterade

+0

@Naterade ग्रेट: डी – Musk

+0

यह सुनिश्चित करें कि आप अपने फ़ंक्शन में 'echo' या 'var_dump' कुछ भी नहीं करते हैं। –

5

मैं जोड़ने के लिए है कि आप बस wpcf7_skip_mail फिल्टर इस्तेमाल कर सकते हैं करना चाहते हैं:

add_filter('wpcf7_skip_mail', function($skip_mail, $contact_form) { 

    if(/* your condition */) 
     $skip_mail = true; 

    return $skip_mail; 

}, 10, 2); 
1

आपके पास अतिरिक्त सेटिंग में पर डेमो मोड चालू कर सकते हैं और इस भेजे जाने से ईमेल कर पाएगा। सीएफ 7 डॉक्स से नीचे देखें।

आप अतिरिक्त सेटिंग्स क्षेत्र में demo_mode: on सेट करते हैं, संपर्क प्रपत्र डेमो मोड में हो जाएगा। इस मोड में, संपर्क फ़ॉर्म मेल भेजने की प्रक्रिया को छोड़ देगा और प्रतिक्रिया संदेश के रूप में "सफलतापूर्वक सफलतापूर्वक" प्रदर्शित करेगा।

संबंधित मुद्दे