Jak skutecznie zablokować spam w formularzach kontaktowych w WordPress?

Spam w formularzach kontaktowych to zmora niemal każdego właściciela strony internetowej. Boty wypełniające pola automatycznie generują setki niepotrzebnych wiadomości, a czasem nawet próbują przemycić złośliwe linki. Na szczęście istnieje kilka prostych sposobów, aby ograniczyć lub całkowicie wyeliminować ten problem.


1. Użyj Google reCAPTCHA

Najpopularniejszym rozwiązaniem jest Google reCAPTCHA. Możesz dodać je do formularzy za pomocą wtyczek takich jak:

  • Contact Form 7 → dostępna oficjalna integracja z reCAPTCHA v3,
  • WPForms → prosta konfiguracja reCAPTCHA i hCaptcha,
  • Fluent Forms → wsparcie dla reCAPTCHA i własnych zabezpieczeń.

Jak działa reCAPTCHA?

  • Wersja v2 – użytkownik musi zaznaczyć „Nie jestem robotem” lub rozwiązać zagadkę obrazkową.
  • Wersja v3 – działa w tle i ocenia prawdopodobieństwo, czy użytkownik jest człowiekiem.

2. Zastosuj ukryte pole typu Honeypot

Honeypot to sprytne rozwiązanie polegające na dodaniu ukrytego pola do formularza.

  • Człowiek go nie widzi i nie uzupełnia.
  • Bot wypełnia je automatycznie – i wiadomość zostaje odrzucona.

Wtyczki takie jak Antispam Bee czy Contact Form 7 Honeypot oferują tę funkcję w kilka kliknięć.


3. Ogranicz liczbę wysyłek z jednego IP

Jeśli bot próbuje wysyłać setki zgłoszeń z jednego adresu, możesz to zablokować:

  • w ustawieniach serwera (np. LiteSpeed, Apache, Nginx),
  • przez wtyczki bezpieczeństwa (np. Wordfence, iThemes Security),
  • lub używając firewalli wbudowanych w hosting.

4. Użyj wtyczek antyspamowych

Najbardziej znane rozwiązania to:

  • Akismet – działa na zasadzie globalnej bazy spamu,
  • Antispam Bee – darmowa i bardzo skuteczna wtyczka europejskiego autorstwa,
  • CleanTalk – płatna usługa, która chroni nie tylko formularze, ale też rejestrację i komentarze.

5. Własne reguły walidacji

Jeśli korzystasz z niestandardowego formularza, możesz dodać swoje reguły:

  • sprawdzanie, czy w polach nie ma linków,
  • ograniczenie długości wiadomości,
  • weryfikacja poprawności e-maila,
  • blokada określonych słów (np. „viagra”, „casino”).

Przykład (dla Contact Form 7 – filtr przed wysyłką):

add_filter('wpcf7_validate_textarea*', 'custom_spam_filter', 20, 2);
function custom_spam_filter($result, $tag) {
    $name = $tag['name'];
    if ($name == 'your-message') {
        $value = $_POST[$name];
        if (strpos($value, 'http://') !== false || strpos($value, 'https://') !== false) {
            $result->invalidate($tag, "Linki są niedozwolone w treści wiadomości.");
        }
    }
    return $result;
}

Podsumowanie

Spam w formularzach kontaktowych można skutecznie ograniczyć, łącząc kilka technik: reCAPTCHA, honeypot, ograniczenia IP i inteligentne filtry. Warto zacząć od prostych metod (honeypot + reCAPTCHA), a następnie wdrożyć bardziej zaawansowane, jeśli problem będzie się powtarzał.

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?