В последних версиях Вордпресса перестал работать мой любимый метод борьбы со спамом, которым я пользовалась лет 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, в последних уже не работает.
Всё. Если вы пользовались старым методом, при обновлении Вордпресса вам необходимо сделать замену. Если нет, советую попробовать: спам режет безупречно — проверено временем и тестами, а живых людей в спам не кидает.
34 комментария на «Защита от спама без плагина: обновлённый WordPress»
МАРИНА (1 комментарий)
Классная статья, но что делать если к папкам нет доступа. Я на бесплатной платформе blogspot сижу, вот сюда то ничего не вставить. Хотя я может что и не знаю.
Княгиня (660 комментариев)
Рецепт только для автономных блогов на Вордпресс. Не для бесплатных платформ.
Оксана (1 комментарий)
Не стоит экономить на платном хостинге,100 рублей в месяц затрат и большое количество плюсов.
Андрей (1 комментарий)
Добрый день! Полностью согласен с Оксаной. Платный надёжный хостинг — залог спокойной работы и качественная техподдержка. Оно того стоит.
Sher (2 комментария)
Интересное описание) Спасибо, просто и информативно!
Киноман (1 комментарий)
Очень актуальная тема в статье. У меня тоже вордпресс и ваша статья подойдет для защиты от спама, хоть сейчас еще не спамят, ибо сайт не очень возрастной.
Nightt08
Спасибо за идею, а то лишние плагины только тормозят сайт. Обязательно попробую так сделать, но как всегда проблема с наличием свободного времени((
А насчёт первого комментария, присоединяюсь не стоит экономить на хостинге, а купить нормальный платный хостинг и не знать проблем.
Ольга (1 комментарий)
По-моему лучший способ защиты от спама в комментариях — это отключить эти самые комментарии. На самом деле уже несколько лет не вижу нормальных комментариев на своих сайтах, сплошные писульки ни о чем не читая статьи.
Ради эксперимента отключила на некоторых сайтах комментарии вовсе, трафик не уменьшился,нашествия спамо-роботом стало меньше. Мне кажется эра коммментируемых сайтов закончилась (((
Княгиня (660 комментариев)
Для набора посещаемости, возможно, комментарии не нужны. Но есть люди, которым хочется увидеть посетителей. Или отзывы. Кому как.
Антонина (1 комментарий)
Поддерживаю вариант с платным хостингом. Деньги небольшие, но снимается сразу много забот. В любой момент можно докупить дополнительную опцию антиспам у хостера, в любой момент можно поменять хостера (почти все хостеры помогают с переносом сайтов). Все вышенаписаное, не умоляет достоинство автора блога, автор благородно делится своими опытами бесплатно облегчить жизнь блогера. Спасибо автору!
Княгиня (660 комментариев)
УмОлять достоинство — это, конечно, круто.
voloslekar (1 комментарий)
Интересно! Сейчас попробую у себя такое сделать, плагины перегружают сайт и время отклика увеличивается (