Snippet: FluentForms E-Mail Blacklist

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?

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:

Siehe auch
Snippet: Spalte Dateigröße in der Mediathek hinzufügen

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:

Nutze ein Snippet-Plugin

Das Snippet für FluentForms im WPCodeBox- Plugin.
Das Snippet für FluentForms im WPCodeBox- 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

Füge den Code in die functions.php Datei deines Child Themes ein.
Füge den Code in die functions.php Datei deines Child Themes ein.

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.

Schreibe einen Kommentar

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