Search code examples
wordpresscontact-form-7

How to hook into Contact Form 7 Before Send


I have a plugin I am writing that I want to interact with Contact Form 7. In my plugin I added the following action add_action

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;

}

I submitted the contact form but the add_action I had did nothing. I'm unsure how to make my plugin intercept or do something when Contact Form 7 does something. Any, help on how to do this?


Solution

  • I had to do this to prevent Email from being sent. Hope it helps.

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

    This code assumes that you are running the latest version of CF7 your code above used to work until a couple months ago when they went and did some refactoring of the code. [Apr 28 '15]