Snippet: Fluent Forms E-Mail Blacklist
Möchtest du mehr zum Thema Fluentforms Blacklist erfahren?
Ich empfehle gerne das Formular-Plugin Fluent Forms, weil es günstig ist und die besten Features bietet. Nun hat mich ein Kunde gefragt, wie er gewisse Domains für die Eintragung in die erstellten Formulare sperren kann.
Wie erstelle ich eine E-Mail-Blacklist für FluentForms?
Mit einer Blacklist für E-Mail-Domains können bestimmte E-Mail-Dienste für die Anmeldung oder Registrierung gesperrt werden. Für FluentForms kann das über ein Code-Snippet für alle angelegten Formular erreicht werden.
Im folgenden Howto lernst du, wie du mittels Code-Plugin oder der functions.php-Datei und einem kleinen Stück Code eine E-Mail-Blacklist, für das Plugin FluentForms erstellst.
Achtung: Führe vorher unbedingt ein Backup aus! Kleinste Fehler können deine Website zerstören.
Sperre E-Mail-Adressen für Fluent Forms
Das Feature, E-Mail-Adressen zu sperren, wird sicher noch direkt in das Plugin kommen. Solange ist der Umweg über ein Code-Snippet kein Problem für uns.
Nutze den folgenden Code, um Domains für FluentForms zu sperren.
Der Code
Version 1: Für alle FluentForms Formulare
<?php
// FluentForms - E-Mail Blacklist - All Forms
// Need help: https://bloggerpilot.com/snippet-fluentforms-e-mail-blacklist/
add_filter('fluentform_validate_input_item_input_email', function ($error, $field, $formData, $fields, $form) {
// Die zu sperrenden E-Mail-Domains
$blacklistDomains = ['gmail.com', 'hotmail.com', 'test.com'];
// Du kannst deine Fehlermeldung hier bearbeiten
$errorMessage = 'Die angegebene E-Mail-Domäne wird nicht akzeptiert.';
$fieldName = $field['name'];
if (empty($formData[$fieldName])) {
return $error;
}
$valueArray = explode('@', $formData[$fieldName]);
$inputDomain = array_pop($valueArray);
if (in_array($inputDomain, $blacklistDomains)) {
return [$errorMessage];
}
return $error;
}, 10, 5);
Version 2: Alternative für nur bestimmte FluentForms
<?php
// FluentForms - E-Mail Blacklist - Specific Forms
// Need help: https://bloggerpilot.com/snippet-fluentforms-e-mail-blacklist/
add_filter('fluentform_validate_input_item_input_email', function ($error, $field, $formData, $fields, $form) {
// Die ID(s) des Formulars
$targetFormId = [13,14];
// Die zu sperrenden E-Mail-Domains
$blacklistDomains = ['gmail.com', 'hotmail.com', 'test.com'];
// Du kannst deine Fehlermeldung hier bearbeiten
$errorMessage = 'Geben Sie hier bitte eine geschäftliche Mail-Adresse ein.';
if (!in_array($form->id, $targetFormId)) {
return $error;
}
$fieldName = $field['name'];
if (empty($formData[$fieldName])) {
return $error;
}
$valueArray = explode('@', $formData[$fieldName]);
$inputDomain = array_pop($valueArray);
if (in_array($inputDomain, $blacklistDomains)) {
return [$errorMessage];
}
return $error;
}, 10, 5);
Das Code-Snippet kurz erklärt:
Mit einem WordPress-Filter wird die im Formular übergebene E-Mail-Adresse überprüft und bei Übereinstimmung mit dem Array $blacklistDomains
wird das Absenden gesperrt.
$blacklistDomains
: Gib hier die Domains in einfachen Anführungszeichen und durch Komma getrennt ein.$errorMessage
: Diese Nachricht wird im Formular angezeigt, wenn der Benutzer eine der gesperrten Domains nutzt.
Alternative Downloads des Codes:
- Gist: FluentForms – E-Mail Blacklist – Alle Formlare
- Gist: FluentForms – E-Mail Blacklist – Ein Formular
Nutze ein Snippet-Plugin
Am einfachsten kannst du kleine Snippets über ein Code-Snippet-Plugin einfügen und aktivieren. Dafür kannst du wahlweise Code Snippets oder WPCodeBox nutzen.
Ich habe fast alle Standard-Einstellungen für diesen Code belassen, nur „Frontend“ habe ich die Ausführung ausgewählt.
In die functions.php einfügen
Wenn du WordPress schon länger nutzt, verwaltest du deine Snippets vielleicht lieber in der functions.php
Datei deines Child Themes.
Das kannst du direkt in WordPress unter Design > Theme-Datei-Editor > functions.php machen, oder über FTP und mit dem Texteditor deiner Wahl.
Fazit
Mit der E-Mail-Blacklist für Fluent Forms können wir nun Domains von unseren Formularen ausschließen und uns damit vor Spam-Einträgen schützen.
Eine andere Anwendungsmöglichkeit ist, dass nur Firmen-E-Mails gesammelt werden sollen. Dafür sperrst du einfach alle kostenlosen E-Mail-Dienste wie gmail.com, hotmail.com und live.com.
Es gibt einige Möglichkeiten, wie du das umsetzen kannst. Entweder direkt im Plugin oder über die functions.php Datei des Child Themes oder aber über ein Code-Snippet-Plugin. Wichtig ist dabei, dass man vorher unbedingt eine Sicherung erstellt.
Offenlegung Werbelinks: Mit einem Stern (*) gekennzeichnete Links und Buttons sind sogenannte Affiliate-Links. BloggerPilot bekommt bei einem Kauf eine Provision, die sich jedoch nicht auf den Endpreis auswirkt. Es ist uns wichtig zu betonen, dass dies keinen Einfluss auf unsere Bewertung oder Meinung hat.