Kürzlich stand ich vor in der Überschrift angegebener Aufgabenstellung. Die Lösung war recht einfach, deshalb jetzt auch in aller Kürze.

Wir benötigen das Plugin “Contact Form 7 Dynamic Text Extension“. Dieses ermöglicht uns, schon bei Aufbau des Formulars bestimmte Parameter in das Formular zu übernehmen, die wir dann später (den Teil macht CF7 aber selbst) an die Nachricht, also Mail oder Datenbank oder was auch immer, übergeben.

Beginnen wir mal mit dem Füllen der Nachricht. Dazu setzen wir einen Eintrag wie diesen:

[dynamischerwert]

In das rechte Feld vom CF7-Formulareditor. Also den Bereich, in dem die Nachricht gestaltet wird, welche dann in der Datenbank gespeichert oder (im Normalfall) per Mail zugesendet wird.

Nun muss der Datensatz noch in das Formular gelangen. Die entsprechenden Daten liegen als Custom Field vor. Das bedeutet, wir können diese recht simpel anzeigen lassen (zum Beispiel in einem Template). Das gleiche macht unser “Dynamic Text Extension” für uns. Da bei mir kein Feld auf der Seite mit dem Inhalt sichtbar sein soll, benutze ich den “dynamichidden”-Shortcode.

[dynamichidden dynamischerwert “CF7_get_custom_field key=’meincustomfield'”]

Der Wert von “meincustomfield” wird so geholt und kann beliebig, beispielsweise auch im Nachrichtenempfängerfeld, angezeigt werden.

Sprich: Ich könnte multiple Seiten mit dem Formular anlegen, welche sich nur durch den Wert des Custom Fields unterscheiden. Der Wert ist eine Emailadresse. Je nach Seite geht die Nachricht also an unterschiedliche Empfänger. Aber das ist ein anderes Einsatzszenario auf das ich später eventuell mal eingehen werde.

Soll der Wert normal dargestellt werden, empfiehlt sich der Shortcode “dynamictext” statt “dynamichidden”. Details finden sich in der englischen Anleitung.

Auch praktisch: Der Tag-Generator von Contact Form 7 besitzt nach der “Dynamic Text Extension”-Installation zwei weitere Einträge mit denen die beschriebenen Codes auch einigermaßen laienfreundlich erstellt werden können.

Leave a Reply

Your email address will not be published.