Support » Plugins » Contact Form 7 — 2 Pflichtfelder ODER

  • Gelöst stefank1

    (@stefank1)


    Hi,
    ist es möglich ein Kontaktformular in „Contact Form 7“ zu erweitern, das man 2 Pflichfelder ver-odern kann?

    Ziel ist es, das der Website-Besucher entweder seine E-Mail ODER seine Telefonnummer angibt.

    Falls jemand ein anderes Plugin kennt, wäre das natürlich auch möglich. Mit „Conditional Fields“ for CF7 komm ich da nicht weiter.

    Ich habe zwar im Netz etwas gefunden, bekomme es aber nicht implementiert: https://second-cup-of-coffee.com/conditional-required-contact-form-7-fields/

    Bin für jede Hilfe dankbar.
    Gruß
    Stefan

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Interessantes Thema, hatte ich mich bisher nicht mit beschäftigt. 🙂

    Nach ein wenig Recherche bin ich auf diesen Beitrag gestoßen:
    https://stackoverflow.com/questions/52408192/accept-either-one-of-two-fields-in-contact-form-7-php-wordpress

    Das scheint prima zu klappen … und zwar so:

    1. Contact Form 7 installieren.
    2. Neues Formular aufsetzen:
      <label> Name (erforderlich)
          [text* your-name] </label>
      
      Die Angabe deiner E-Mail-Adresse <em>oder</em> Telefonnummer ist erforderlich:
      <label> E-Mail
          [email your-email] </label>
      
      <label>Telefon
          [text your-telephone] </label>
      
      <label> Thema
          [text your-subject] </label>
      
      <label> Deine Nachricht
          [textarea your-message] </label>
      
      [submit "Absenden"]

      Achte darauf, dass das „erforderlich“-Sternchen bei [email your-email] und [text your-telephone] entfällt.

    3. Plugin Code Snippets installieren und ein neues Code-Schnipsel hinzufügen:
      <?php
      add_filter( 'wpcf7_validate', 'wpq_validate' );
      
      function wpq_validate( $result ) {
      
      	$form      = WPCF7_Submission::get_instance();
      	$email     = $form->get_posted_data( 'your-email' );
      	$telephone = $form->get_posted_data( 'your-telephone' );
      
      	if ( empty( $email ) && empty( $telephone ) ) {
      		$result->invalidate( 'your-email', 'Die Eingabe eines Feldes ist erforderlich.' );
      		$result->invalidate( 'your-telephone', 'Die Eingabe eines Feldes ist erforderlich.' );
      	}
      	return $result;
      
      }

      Nicht vergessen, das Code-Schnipsel zur Ausführung „Nur auf öffentlicher Seite“ zu aktivieren.

    Vielen Dank an „tobiasg“ für das Teilen seiner Lösung.

    Ergebnis ist, dass unter den Eingabefeldern die Fehlermeldung ausgegeben wird, sobald keines der beiden Felder ausgefüllt wurde.

    Thread-Starter stefank1

    (@stefank1)

    Das ist sehr cool, vielen Dank.
    Ich probiere das später und gebe Rückmeldung.

    Dank
    Gruß

    Thread-Starter stefank1

    (@stefank1)

    Es funktioniert einwandfrei und eigentlich so einfach. Vielen Dank!
    Mir war nicht klar, das man mit „Code-Snippets“ so etwas machen kann.

    Ein kleines Manko gibt es dennoch: im Reiter E-Mail wird unter „Zusätzliche Header“ folgendes angezeigt: „Ungültige Postfachsyntax wird im Feld Reply-To verwendet.“ Da ist das Standard-Feld drin: Reply-To: [your-email]

    Ich persönlich finde das zwar nicht schlimm, weiß aber nicht, ob das irgendwelche Auswirkungen hat.

    Vielen Dank
    Gruß
    Stefan

    Thread-Starter stefank1

    (@stefank1)

    Upps, es gibt doch ein Problem: die angegebene Telefonnummer wird nicht weitergegeben. Da muss ich nochmal schauen, wie das geht…

    Ok, das war nicht das Problem. Bleibt nur der Konfig-Fehler, den ich nicht unbedingt schlimm finde, weil es ja ansonsten super funktioniert.
    Danke nochmals

    • Diese Antwort wurde geändert vor 4 Jahren, 8 Monaten von stefank1.
    Thread-Starter stefank1

    (@stefank1)

    Hab nochmal eine Frage:
    Ist es möglich die Telefon-Nummer zu validieren? Wie es im Moment ist, kann man ja alles in das Feld eingeben.
    Ich habe zwar einige Snippets gefunden, bekomme die aber nicht eingebunden.
    Als C# Programmierer ist PHP doch eine andere Welt…

    Die Validierung der Telefonnummer ist grundsätzlich möglich. Beispiele findest du in diesem Thread auf Stack Exchange: https://stackoverflow.com/questions/35425854/contact-form-7-telephone-number-verification

    Ein reines Zahlenfeld zu verwenden, ist wahrscheinlich keine gute Lösung, weil dann +49… oder die Verwendung von Klammern oder Schrägstrich zu Fehlern führen würde.

    Zur fehlerhaften Syntax der E-Mail-Adresse gibt der Plugin-Autor den Hinweis, dass die Verwendung von Reply-To: [your-email] einen Fehler verursacht, wenn die E-Mail-Adresse nicht obligatorisch ausgefüllt werden muss.

    Thread-Starter stefank1

    (@stefank1)

    Vielen Dank für deine Antwort.

    Den Hinweis zur Mail-Adresse hab ich leider nicht gelesen, sorry.

    Mit der Validierung habe ich ein bisschen rumgespielt, bei all den Möglichkeiten eine Telefonnummer einzugeben, macht das wirklich nicht viel Sinn.

    Gruß

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Das Thema „Contact Form 7 — 2 Pflichtfelder ODER“ ist für neue Antworten geschlossen.