Защита от спама без плагина: обновлённый WordPress

24 мая 2016. Рубрики: Интернет, Рабочие заметки; автор — Юлия Панина aka Княгиня.

В последних версиях Вордпресса перестал работать мой любимый метод борьбы со спамом, которым я пользовалась лет 6, если не больше. Метод перестал, а спамеры никуда не делись. К счастью, народная мысль уже нашла альтернативу; приём, в сущности, тот же: подмена типового поля, разница в способе подключения. Выкладываю его в дополнение к старой статье.

Так же, как и раньше, подменяем поле сообщения; если вы уже пользовались старым методом, то делать ничего не надо, если же нет, то в папке с файлами темы ищем comments.php, в нём — поле комментария:

<textarea name="comment" id="comment" cols="61" rows="13"></textarea>

Напоминаю, что код конкретной темы может отличаться наличием дополнительных атрибутов, поэтому при поиске ориентируемся на textarea. Заменяем этот код на:

<textarea name="comment" id="comment" cols="1" rows="1"></textarea>
<textarea name="newName" id="newName" cols="61" rows="13"></textarea>

А в css добавляем код:

#comment{
display:none;
}

Просто удалить поле с именем «comment» нельзя — оно должно присутствовать в коде html и отвлекать внимание ботов, поэтому его надо спрятать.

А дальше обращаемся к другому файлу темы — function.php; выбираем подходящее место и вставляем туда код:

add_filter('init', 'verify_spam');
function verify_spam($commentdata){
  $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спаму нет!');
  $comment_content = trim($_POST['newName']);
  $_POST['comment'] = $comment_content;
  return $commentdata;
}

Напоминаю: имя поле не обязано быть newName — выбирайте какое нравится, только не забудьте согласовать то, что вставляете в код формы, с тем, что прописываете в функции.

Примечание. В рецепте, который ходит по интернету, используется имя «real-comment». Некоторые на основании этого считают, что спам-бот тут же обойдёт эту защиту, поменяв имя, на которое нацелен. Почему им не приходит в голову использовать собственное — не знаю; по мне, так это очевидный ход, а если кому-то трудно изменить одно слово в коде, так может, ему рано заниматься своим сайтом?

У этого метода есть одно большое преимущество по сравнению с прошлым: он изменяет только тему, не вмешиваясь в файлы Вордпресса, и поэтому не затирается при обновлениях.

Примечание 2. В сети также можно встретить код, который немного отличается от приведённого — в первой строчке идёт:

add_filter('pre_comment_on_post', 'verify_spam');

Этот код предназначен для версий Вордпресс до 4.4, в последних уже не работает.

Всё. Если вы пользовались старым методом, при обновлении Вордпресса вам необходимо сделать замену. Если нет, советую попробовать: спам режет безупречно — проверено временем и тестами, а живых людей в спам не кидает.

Отзывы (28) на «Защита от спама без плагина: обновлённый WordPress»
  1. МАРИНА (1 комментарий)

    Классная статья, но что делать если к папкам нет доступа. Я на бесплатной платформе blogspot сижу, вот сюда то ничего не вставить. Хотя я может что и не знаю. :(

    Ответить на этот комментарий
    • Княгиня (650 комментариев)

      Рецепт только для автономных блогов на Вордпресс. Не для бесплатных платформ.

      Ответить на этот комментарий
    • Оксана (1 комментарий)

      Не стоит экономить на платном хостинге,100 рублей в месяц затрат и большое количество плюсов.

      Ответить на этот комментарий
      • Андрей (1 комментарий)

        Добрый день! Полностью согласен с Оксаной. Платный надёжный хостинг — залог спокойной работы и качественная техподдержка. Оно того стоит.

        Ответить на этот комментарий
  2. Sher (2 комментария)

    Интересное описание) Спасибо, просто и информативно!

    Ответить на этот комментарий
  3. Киноман (1 комментарий)

    Очень актуальная тема в статье. У меня тоже вордпресс и ваша статья подойдет для защиты от спама, хоть сейчас еще не спамят, ибо сайт не очень возрастной.

    Ответить на этот комментарий
  4. Nightt08

    Спасибо за идею, а то лишние плагины только тормозят сайт. Обязательно попробую так сделать, но как всегда проблема с наличием свободного времени((
    А насчёт первого комментария, присоединяюсь не стоит экономить на хостинге, а купить нормальный платный хостинг и не знать проблем.

    Ответить на этот комментарий
  5. Ольга (1 комментарий)

    По-моему лучший способ защиты от спама в комментариях — это отключить эти самые комментарии. На самом деле уже несколько лет не вижу нормальных комментариев на своих сайтах, сплошные писульки ни о чем не читая статьи.
    Ради эксперимента отключила на некоторых сайтах комментарии вовсе, трафик не уменьшился,нашествия спамо-роботом стало меньше. Мне кажется эра коммментируемых сайтов закончилась (((

    Ответить на этот комментарий
    • Княгиня (650 комментариев)

      Для набора посещаемости, возможно, комментарии не нужны. Но есть люди, которым хочется увидеть посетителей. Или отзывы. Кому как.

      Ответить на этот комментарий
  6. Антонина (1 комментарий)

    Поддерживаю вариант с платным хостингом. Деньги небольшие, но снимается сразу много забот. В любой момент можно докупить дополнительную опцию антиспам у хостера, в любой момент можно поменять хостера (почти все хостеры помогают с переносом сайтов). Все вышенаписаное, не умоляет достоинство автора блога, автор благородно делится своими опытами бесплатно облегчить жизнь блогера. Спасибо автору!

    Ответить на этот комментарий
    • Княгиня (650 комментариев)

      УмОлять достоинство — это, конечно, круто.

      Ответить на этот комментарий
  7. voloslekar (1 комментарий)

    Интересно! Сейчас попробую у себя такое сделать, плагины перегружают сайт и время отклика увеличивается (

    Ответить на этот комментарий

Есть что сказать? Не молчим!

Используйте теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" code=""> <ul> <li> <ol> .

Комментарии короче 200 символов публикуются без активной ссылки. Пробелы не учитываются.

Ссылки с комментариев dofollow. Ознакомьтесь, пожалуйста, с правилами dofollow-комментирования. Кто не читает, тот сам себе враг.