wake-up-neo.net

So hängen Sie das Kontaktformular 7 vor dem Senden ein

Ich habe ein Plugin, das ich schreibe, das ich mit Contact Form 7 interagieren möchte ..__ In meinem Plugin habe ich die folgende Aktion add_action hinzugefügt

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;

}

Ich habe das Kontaktformular abgeschickt, aber die add_action, die ich hatte, hat nichts getan. Hilfe, wie das geht?

11
Naterade

Ich musste dies tun, um zu verhindern, dass E-Mails gesendet werden. Ich hoffe es hilft.

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

Bei diesem Code wird davon ausgegangen, dass Sie die neueste Version von CF7 ausführen, die Ihr Code oben verwendet hat, bis er vor ein paar Monaten funktionierte, als der Code geändert wurde.

19
Musk

Ich möchte hinzufügen, dass Sie einfach den wpcf7_skip_mail-Filter verwenden könnten:

add_filter( 'wpcf7_skip_mail', 'maybe_skip_mail' );

function maybe_skip_mail( $skip_mail, $contact_form ) {

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

    return $skip_mail;

}, 10, 2 );
9
d79

Sie können den Demo-Modus in weiteren Einstellungen aktivieren. Dadurch wird verhindert, dass E-Mails gesendet werden. Siehe unten in den CF7-Dokumenten.

Wenn Sie demo_mode: on im Feld Zusätzliche Einstellungen festlegen, wird der Kontakt Das Formular befindet sich im Demo-Modus. In diesem Modus wird das Kontaktformular Überspringen Sie den Vorgang des Versendens von E-Mails und zeigen Sie an, dass "complete " erfolgreich ”als Antwortnachricht.

1
Dan Canetti