Kontaktform unter WordPress

Der Betreiber eines Internetauftritts versucht so viele relevante Informationen wie möglich auf seiner Seite zu präsentieren. Das wären einerseits Ideen, Lieblingsthemen oder auch Angebote. Möchte ein Gast weitere Informationen erhalten, die nicht aus der Seite hervorgingen, oder Themen ansprechen, die nicht vom Betreiber berücksichtigt werden, muss der Gast in der Lage sein schnell und einfach Kontakt aufzunehmen.

UPDATE 25.August 2014: Mit der Contact Form 7 Version 3.9 hat sich einiges geaendert: Siehe Hier. Das heisst, die functions.php muss anders angepasst werden. Sie ganz unten.

Die beste Lösung hierfür ist ein Kontaktformular. Empfehlen kann ich für WordPress Contact Form 7. Wir verwenden dies ebenfalls, nachzusehen unter http://www.yawc.de/wordpress/kontakt/. Herunterladen kann man das WordPress Plugin hier. Nach der Installation und Aktivierung hat man im Backend die Möglichkeit ein neues Formular zu erstellen.

Unser neues Formular benötigt nun ein passenden Titel. Eingabefelder für Name, Email, Betreff, Nachricht und der Submit-Button sind bereits vorhanden. Wenn wir das Formular gespeichert haben, erhalten wir einen Code, der wie folgt aussehen kann:

[ contact-form 3 "Beispiel Formular Feld 1" ].

Diesen kopieren wir in die entsprechende Seite oder Artikel. Sollte uns ein bestimmter Punkt fehlen, z.B. Lieblingsfarbe, dann hat man die Möglichkeit ein neues Text-Tag zugenieren. Diesem Tag gibt man zur besseren Übersicht den Namen Farbe. Dabei erhält man zwei Codes. Der erste Code [text Farbe] muss links in das Formularfeld eingetragen. Der zweite Code [Farbe] dient als Platzhalter der Eingabe des Gastes, dazu später mehr.
Nach dem der Gast auf Senden gedrückt hat, erhält der Betreiber der Seite eine Mail mit den diversen Inhalten. Diese Mail kann man Platzhaltern wie [Farbe] individualisieren. Eine Mail besteht aus zwei anpassbaren Teilen, einem linken, mit Angaben des Senders und Empfänger, und dem rechten, mit dem eigentlichen Inhalt. Die Verwendeten Platzhalter werden hierbei vor dem Senden durch die Angaben des Gastes ersetzt.

Hier nochmal eine kleine Übersicht der Funktion:

  • Spam-Schutz durch Captchas und/oder Askimet.
  • Kontrolle der Eingaben
  • Hochladen von Dateien
  • Select-Auswahl
  • Angabe von Pflichtfelder
  • Verwendung mehrerer Formulare
  • und..und..und…

Was mir aber noch gefehlt hat, war die Möglichkeit, dass sich der Gast die Mail ebenfalls zusenden lassen kann. Dazu habe ich neues Tag erzeugt, das wie folgt aufgebaut ist:

[checkbox contact_sendmail use_label_element "Kopie an meine E-Mailadresse senden"]

Im An-Feld der Mail musste ich folgende Felder hinzufügen:[anfrager-name] und <[anfrager-mail]>.
Im letzten Schritt hab ich der functions.php im aktivierten Theme folgenden Code hinzufgefügt:

function check_mail_send_contactform($cf7) {
  if($cf7->posted_data["contact_sendmail"]) {
   $cf7->posted_data["anfrager-name"] = $cf7->posted_data["your-name"];
   $cf7->posted_data["anfrager-mail"] = $cf7->posted_data["your-email"];
  }
  else {
   $cf7->posted_data["anfrager-name"] = "";
   $cf7->posted_data["anfrager-mail"] = "";
  }
  return $cf7;
}
add_action('wpcf7_before_send_mail','check_mail_send_contactform');

UPDATE 25.August 2014:
Es ist zwar eine neue Erweiterung für die functions.php notwendig, der Ablauf ist aber der gleiche.

Kurze Erklärung:

 if($cf7->posted_data["contact_sendmail"]) { ... }

überprüft, ob die Checkbox aktiviert wurde und führt, wenn positiv, den inneren Teil aus.

$cf7->posted_data["anfrager-name"] = $cf7->posted_data["your-name"];

und

 $cf7->posted_data["anfrager-mail"] = $cf7->posted_data["your-email"];

speichern die Gast-Eingaben unter dem Namen anfrager-name und anfrager-mail nochmals, damit später auf den Platzhalter[anfrager-name] und [anfrager-mail] in der Mail zugegriffen werden kann.
Der else { ... }-Zweig ist wichtig, damit die Platzhalter überhaupt ersetzt werden und nicht in der Mail verweilen. Dies führt dadurch dazu, dass die Platzhalter entfernt werden, wenn der Gast die Checkbox nicht drückt.

add_action('wpcf7_before_send_mail','check_mail_send_contactform');

Der letzte Teil ist dafür verantwortlich, dass die Funktion vor dem Versenden der Mail aufgerufen wird. Dies hat uns erst die Möglichkeit gegeben, die Daten in Abhängigkeit der Checkbox zu manipulieren.

UPDATE 25.August 2014: Neue Erweiterung der ‚functions.php‘ für Contact Form 7 Version >= 3.9

function check_cf7_posted_data($posted_data) {
        if( $posted_data["contact_sendmail"][0] != Null ) {
                $posted_data["anfrager-name"] = $posted_data["your-name"];
                $posted_data["anfrager-mail"] = $posted_data["your-email"];
        }
        else {
                $posted_data["anfrager-name"] = "";
                $posted_data["anfrager-mail"] = "";
        }
        return $posted_data;
}
add_action('wpcf7_posted_data','check_cf7_posted_data');

Bei Fragen einfach fragen. Sonst kann ich noch die Docs und FAQ von Custom Form 7 empfehlen.

7 Kommentare
  1. Roland sagt:

    Hallo

    Danke für Deine Anleitung. Es funktioniert!

    Lässt es sich lösen, dass das Häckchen vor „Kopie an meine E-Mailadresse senden“ bereits angeklickt ist?

    Danke und Grüsse

    Roland

  2. Sven sagt:

    Es muesste klappen, wenn du statt dem hier

    [checkbox contact_sendmail use_label_element „Kopie an meine E-Mailadresse senden“]

    folgendes verwendest:

    [checkbox contact_sendmail default:1 use_label_element „Kopie an meine E-Mailadresse senden“]

    Dann wird default die erste (deswegen die 1, auch wenn wir nur eine haben 😉 ) Checkbox aktiviert.

    Gruesse

    Sven

  3. Roland sagt:

    Und es funktioniert!

    Danke Sven!

  4. Andi sagt:

    Hey Sven,

    bei mir funktioniert die Weiterleitung leider nicht, hab all deine Anweisungen befolgt. Das Formular sieht so aus:

    Ihr Name (Pflichtfeld)
    [text* your-name]

    Ihre E-Mail-Adresse (Pflichtfeld)
    [email* your-email]

    Betreff
    [text your-subject]

    Ihre Nachricht
    [textarea your-message]

    [captchac captcha-554 size:m] [captchar captcha-554]

    [checkbox contact_sendmail use_label_element „Kopie an meine E-Mailadresse senden“]

    [submit „Senden“]
    ————–
    Die Funktion, wie du sie beschrieben hast, habe ich 1/1 in meine functions.php übernommen. Wo liegt der Fehler? Danke für deine Hilfe. Grüße Andi

  5. Sven sagt:

    „Wo liegt der Fehler?“ Du bist ja lustig :)
    Kann dir nur sagen, dass es bei mir klappt, wie ich es hier beschrieben habe :)
    Vielleicht hast du im Backend von ContactForm7 nicht den Harken bei „Verwende Mail“ gesetzt oder bei „An:“ nicht geschrieben: „[anfrager-name] < [anfrager-mail]>“
    Gruesse

  6. Katrin sagt:

    Guten Tag,

    so ganz klappt es bei mir nicht.

    Ich verstehe die Formulierung „Im An-Feld der Mail musste ich folgende Felder hinzufügen“ […] nicht ganz. Ist das „To“ Feld im Bereich „Kontaktformular bearbeiten“ gemeint? Wenn ich dies zu meiner eigenen Mailadresse hinzufüge, erhält nur der Anfrage eine Mail, aber nicht ich.

    Wo genau muss „[anfrager-name] “ eingetragen werden?

    Danke und Grüße.
    Kartin

  7. Sven sagt:

    Hallo Kartin,

    Genau, im „To:“ bzw. „An:“ Feld steht dann

    [anfrager-name] < [anfrager-mail]>

    Dadurch laesst sich steuern, ob der Anfragende eine E-Mail bekommt.

    Unter „Zusätzliche Kopfzeilen:“ (keine Ahnung wie es im englischen heisst), steht bei mir dann

    Bcc: [meine-adresse]@yawc.de

    Damit erhalte ich auf dieser Adresse dann immer die gleiche Version der E-Mail geschickt, egal ob die Box gecheckt ist oder nicht.

    Gruesse

    Sven

Hinterlasse eine Antwort

Deine Email-Adresse wird niemals veröffentlicht. Pflichtfelder sind mit * gekennzeichnet.