Contact Form 7: Formular-Daten nach dem Absenden nutzen

So können Sie mit Contact Form 7 Formular-Daten, trotz fehlender API bzw. fehlender Dokumentation, nach dem Absenden nutzen.

Für ein Kundenprojekt hatte ich das erste mal das Vergnügen mich näher mit dem Thema Contact Form 7 auseinander zu setzen. Die Aufgabe bestand darin, nach dem Absenden des Formulars noch etwas mit den Formular-Daten zu machen. Keine leichte Aufgabe mit dem Contact Form 7, denn es leert nach dem Absenden die Formular-Felder per Javascript und auch einen Hook mit Übergabe der Formular-Daten gibt es nicht direkt.

Ich habe mit dann einfach einmal den vorhanden Hook angeschaut und bin Schritt für Schritt den Plugin-Code durchgegangen. Der Hook wpcf7_mail_sent bekommt das Formular übergeben. Das hilft leider nicht weiter, denn dort sind keine Daten direkt enthalten. Allerdings hat das Contact Form 7 ein Singleton der Klasse WPCF7_Submission. In einer solchen Submission sind die Formular-Daten enthalten, d.h. man kann die nehmen und weiterverarbeiten. In meinem Fall speichere ich diese in eine Session.

add_action('wpcf7_mail_sent', 'save_cf7_data');

function save_cf7_data($cf) 
{
	
    if(session_id() == '') {
        session_start();
    } 

    $current_submission = WPCF7_Submission::get_instance();
	
    $_SESSION['cf7_submission'] = $current_submission->get_posted_data();

}

Wenn man nun die Daten nutzen will, kann man sich diese aus der Session auslesen. Das klappt auch hervorragend, wenn man eine weitere Seite per Ajax aufruft, dann kann man sich nämlich die Variablen auch in Javascript hineinladen.


0 0 0


Diskussion

avatar placeholder
18. Nov 2014 von Fred

Hallo Tobias,

wenn ich dieses Script in meine functions.php hinzufüge bleibt die session variable weiterhin leer :-(

Nach einem Submit leite ich auf eine Danke Seite weiter aber die Variable ist leer :-(

http://ywh.de/testform/

Es scheint irgendwie dass meine Session nicht angezeigt wird.
In meiner header.php habe ich als erste zeile session_start(); und es wirft auch was aus, wenn ich eine Session Var manuell anlege.

Irgend eine Ahnung?
Vielen Dank u. Grüße

avatar placeholder
21. Nov 2014 von Tobias Redmann

Hallo Fred,

leider kann ich das aus der Entfernung nicht sagen. Wenn ich bei Gelegenheit mal schauen soll, schreib mir doch einfach eine Mail an tobias.redmann@tricd.de .

In meinen Projekten hat es so bisher problemlos funktioniert.

Viele Grüße,
Tobias

Mitdiskutieren

*