Wenn jemand mein Kontaktformular ausfüllt, soll zusätzlich zum Namen wenigstens die E-Mail-Adresse oder Telefonnummer angeben werden. Nur ein Feld ist erforderlich. Wie mache ich das?
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:
Contact Form 7 installieren.
Neues Formular aufsetzen:
Die Angabe deiner E-Mail-Adresse oder Telefonnummer ist erforderlich: [submit "Absenden"]
Achte darauf, dass das „erforderlich“-Sternchen bei [email your-email]
und [text your-telephone]
entfällt.
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' );
$errormsg = 'Die Eingabe eines Feldes ist erforderlich.';
if ( empty( $email ) && empty( $telephone ) ) {
$result->invalidate( 'your-email', $errormsg );
$result->invalidate( 'your-telephone', $errormsg );
}
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. Wird zumindest ein Feld ausgefüllt, wird das Formular ohne weitere Hinweise oder Fehlermeldungen abgeschickt.
Kommentare
3 Antworten zu „Contact Form 7: von zwei Feldern nur eines erforderlich“
Kann es sein, dass der Link zur Lösung falsch ist und eigentlich so lauten müsste:
https://stackoverflow.com/questions/52408192/accept-either-one-of-two-fields-in-contact-form-7-php-wordpress/52408495#52408495
Danke für den Hinweis, Torsten. Der Link war tatsächlich falsch, ist korrigiert.
Ich bekam heute noch den Hinweis, dass im E-Mail-Formular für die Weiterleitung der Kontaktanfrage ein Validierungsfehler für den Zusätzlichen Header angezeigt wird: „Reply-To: [your-email]“ erzeugt einen Fehler, wenn das E-Mail-Feld nicht ausgefüllt wird. Darauf wird auch in der Dokumentation von Contact Form 7 hingewiesen.
In diesem Fall ist es wahrscheinlich besser, den zusätzlichen Header einfach wegzulassen. Gibt der Absender seine E-Mail-Adresse an, wird sie in der weitergeleiteten Nachricht mit der Zeile „From: [your-name] “ ohnehin angezeigt.