Я, наверное как и многие, стал жертвой спама, который лился через плагин wordpress “contact form 7″

С одной стороны без этого плагина никуда, а с другой – такое кол-во спама (до 20 писем в день).

Я пробовал и капчу ставить и вопросы в стиле 5+5=?, но ничего не помогало. Решение в конечном итоге нашлось.

Суть описываемого способа проста.

Как работают спам боты?

Они делают запрос через HTTP соединение и отправляют данные.

При таких запросах боты не обрабатывают скрипты и не нажимают кнопку отправить.

Этим мы и воспользуемся.

Сделаем так, чтобы при нажатии кнопки отправить заполнялось невидимое для пользователя поле.

У пользователя (в браузере) будет отрабатывать javascript, а у спамбота – не будет.

А потом будем проверять так заполнено это поле или нет.

Для этого нам понадобиться ftp доступ и блокнот.

  1. В админке открываем форму и добавляем поле “[text* antispam]”
    Это обязательное текстовое поле.
    “antispam” – имя поля. Рекомендую дать этому полю свое имя.
    Имя этого поля будет использоваться и в дальнейшем.
    Если измените его имя – поменяйте везде!
  2. Открываем стили. И там добавляем
    .antispam {
    display:none;
    }
    Это нужно для того, чтобы пользователь не видел этого поля.
  3. Открываем файл “\wp-content\plugins\contact-form-7\includes\js\scripts.js”
    И добавляем в функцию “beforeSerialize: function($form, options) {” следующую строку:

    Тут antispam – имя поля, которое мы обозначили в п.1.

    ‘nospam’ – наше кодовое слово, которое мы будем дальше проверять.
    Тоже рекомендую его изменить.

  4. В функции темы добавляем следующий код:

    Готово. Спам больше не приходит.