Contact Form 7: Eigene Fehlermeldungen hinzufügen

Contact Form 7 überprüft die Eingaben des Benutzers, bevor ein Formular tatsächlich versendet wird. Wird dabei eine fehlerhafte Eingabe entdeckt, wird eine Fehlermeldung ausgegeben. Das Formular wird erst versendet, wenn der Benutzer seine Eingabe korrigiert hat.

Um die Formularvalidierung um eigene Regeln und Fehlermeldungen zu erweitern, kannst du den Filter wpcf7_validate_{type_of_the_form-tag} verwenden. Der Platzhalter {type_of_the_form-tag} wird durch den Feldtypen ersetzt. Du verwendest also zum Beispiel den Filter wpcf7_validate_email*, wenn du E-Mail-Pflichtfelder überprüfen möchtest.

An die Filterfunktion werden die Parameter $result und $tag übergeben. $result ist eine Instanz der WPCF7_Validation-Klasse. Das Array $tag beinhaltet Informationen über das Formular-Tag. Diese können mit Hilfe der Klasse WPCF7_Shortcode verarbeitet werden.

Innerhalb der Filterfunktion wird zunächst der Name des Feldes ($tag->name) überprüft, um sicherzustellen, dass nur dieses Feld validiert wird. Anschließend kannst du eigene Regeln aufstellen, um die Benutzereingaben zu kontrollieren.

In diesem Beispiel wird mit der Funktion email_exists() überprüft, ob bereits ein Benutzer mit der angegebenen E-Mail-Adresse registriert ist. Sollte das der Fall sein, wird $result->invalidate() aufgerufen. Die Funktion erwartet als ersten Parameter das Array $tag und als zweiten Parameter die Fehlermeldung, die ausgegeben werden soll. Zum Schluss wird $result wieder zurückgegeben.

/**
 * Contact Form 7: Eigene Fehlermeldungen
 * https://wp-bibel.de/snippet/contact-form-7-eigene-fehlermeldungen/ ‎
 */
	
add_filter('wpcf7_validate_email*', 'wp_bibel_de_custom_wpcf7_validate_email', 20, 2);
 
function wp_bibel_de_custom_wpcf7_validate_email($result, $tag) {
	$tag = new WPCF7_Shortcode($tag);
	 
	if('your-email' == $tag->name) :
		$your_email = isset($_POST['your-email']) ? trim($_POST['your-email']) : '';
	 
		if(email_exists($your_email)) :
			$result->invalidate($tag, "The email address you entered is already in use.");
		endif; 
	endif;
	 
	return $result;
}

Hier findest du weitere Beiträge von uns zum Thema Contact Form 7:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.