Anti-Spam für Elementor Pro Formulare
Elementor Pro bietet eine praktische Formularfunktion – leider ohne vernünftigen Spam-Schutz. Die Standardlösung reCAPTCHA ist datenschutzrechtlich problematisch. Hier zeige ich eine DSGVO-konforme Alternative.
Das Problem
Elementor Pro Formulare:
- Erkennen die WordPress-Blacklist für Kommentare nicht
- Integrieren nicht mit Plugins wie Antispam Bee
- Erfordern für Spam-Schutz oft Google reCAPTCHA
Warum reCAPTCHA problematisch ist
Google reCAPTCHA (vor allem V3):
- Setzt Third-Party-Cookies
- Überträgt Daten an US-Server
- Erfordert Einwilligung im Cookie-Banner
- Macht deine Datenschutzerklärung komplizierter
Für die meisten Kontaktformulare ist das übertrieben.
Die Lösung: WordPress-Blacklist nutzen
Mit einem kleinen Code-Snippet können wir die WordPress-interne Blacklist für Elementor-Formulare aktivieren:
/**
* Spam-Filter für Elementor Pro Formulare
* Nutzt die WordPress Kommentar-Blacklist
*/
add_action('elementor_pro/forms/validation', function($record, $ajax_handler) {
$fields = $record->get('fields');
$blacklist = get_option('disallowed_keys');
if (empty($blacklist)) {
return;
}
$blacklist_array = explode("\n", $blacklist);
foreach ($fields as $field) {
foreach ($blacklist_array as $word) {
$word = trim($word);
if (!empty($word) && stripos($field['value'], $word) !== false) {
$ajax_handler->add_error(
$field['id'],
__('Diese Nachricht wurde als Spam erkannt.', 'theme')
);
return;
}
}
}
}, 10, 2);So funktioniert es
- Der Code prüft alle Formularfelder gegen die WordPress-Blacklist
- Die Blacklist findest du unter Einstellungen → Diskussion → Nicht erlaubte Kommentar-Schlüssel
- Bei einem Treffer wird das Formular blockiert
Blacklist pflegen
Trage typische Spam-Begriffe ein (einer pro Zeile):
- viagra
- casino
- cryptocurrency
- [url=
- bit.ly
- tinyurl
Zusätzlich: Honeypot-Feld
Ein Honeypot ist ein verstecktes Feld, das nur Bots ausfüllen:
// Honeypot für Elementor Formulare
add_action('elementor_pro/forms/validation', function($record, $ajax_handler) {
$fields = $record->get('fields');
// Prüfe ob Honeypot-Feld existiert und ausgefüllt wurde
if (isset($fields['honeypot']) && !empty($fields['honeypot']['value'])) {
$ajax_handler->add_error('honeypot', 'Spam erkannt.');
}
}, 10, 2);Honeypot einrichten
- Füge in Elementor ein Textfeld namens "honeypot" hinzu
- Setze es per CSS auf
display: none;oderposition: absolute; left: -9999px; - Normale Besucher sehen es nicht, Bots füllen es aus
Installation
Den Code kannst du einfügen:
- In die
functions.phpdeines Child-Themes - Mit dem Plugin "Code Snippets"
- Als eigenes Mini-Plugin
Fazit
Mit diesen beiden Methoden – Blacklist und Honeypot – fängst du den Großteil des Spams ab, ohne auf externe Dienste angewiesen zu sein. Komplett DSGVO-konform und ohne Cookie-Banner-Stress.
Du brauchst Hilfe bei der Implementierung? Schreib mir – ich unterstütze dich gerne.