Как избавиться от спама в блоге на Wordpress
Для тех, у кого блог работает на движке Wordpress, как и у меня.
Замечали ли вы, что часто приходят странноватые комментарии от незнакомых людей? Вполне невинные, казалось бы. Например, «автор молодец, классно написал», «Пост интересный, а вы знаете, что сегодня Пуговкин умер?», или еще что-нибудь в таком духе.
В этих комментариях имя автора отображается как ссылка на какой-либо сайт. Таким образом, рассылая по блогам кучи одинаковых комментариев, замаскированных под обычные ответы от ваших читателей, спамеры используют вас как рекламную площадку своего сайта — чем больше в Интернете ссылок на него, тем выше его рейтинг в поисковиках.
Так как мне надоело удалять эти комментарии, я решил просто нейтрализовать их — сделать так, чтобы имя комментатора не являлось ссылкой.
В каталоге, куда установлен Wordpress, найдите файл wp-includes/comment-template.php. Найдите функцию get_comment_author_link(). В районе 111 строки в файле будет следующий код:
if ( empty( $url ) || ‘http://’ == $url )
$return = $author;
else
$return = “<a href=’$url’ rel=’external nofollow’>$author</a>”;
Если вы не знакомы с программированием, этот код означает: «если автор комментария не указал верного адреса своего сайта, тогда просто выведем его имя, а если указал — тогда выведем его имя в виде ссылки на указанный им сайт».
Оставьте из этих четырех строчек только $return = $author; , а остальные три удалите. Сохраните файл и загрузите его на сервер.
Кроме того, если поле URL в форме отправки комментария у вас не использует для входа по OpenID, как у меня, вы можете его вообще удалить или скрыть.
Для этого найдите в каталоге wp-content/themes/имя_темы/ файл comments.php, либо просто в интерфейсе администрирования зайдите в раздел «Дизайн», нажмите «редактировать тему», и справа выберите comments.php.
Ближе к концу файла будет такой код:
<p><input type=”text” name=”url” id=”url” value=”<?php echo $comment_author_url; ?>” size=”22″ tabindex=”3″ />
<label for=”url”><small>Website</small></label></p>
Либо удалите этот текст полностью, либо закомментируйте: <!– отключаемый код –>. Еще хитрее — можно ничего не удалять, а просто заменить type=”text” на type=”hidden”. Тогда это поле ввода не будет видно пользователю, зато когда вам будет приходить на электронную почту уведомление о новом комментарии, вы будете видеть, указал ли комментатор адрес своего сайта или нет. Если указал — 100% спамер, ведь обычный пользователь не можете его указать, так как просто не видит поля ввода.
Ну и конечно же, в настройках блога (Интерфейс администрирования Wordpress → Настройки → Обсуждение) укажите «Задержать комментарий, если он содержит 1 или более ссылок», если вы этого еще не сделали.
Вот и все. Наверное, можно вместо всего этого и капчу поставить, но кому нравится каждый раз вводить циферки?

Июль 28th, 2008 at 19:37
Дело в том, что это так называемые биороботы, которые зачастую спамят вручную а работу на дому этим людям раздают определённые заказчики. Поэтому попытки спрятать поле URL практически не имеют смысла. Причём изредка комментарии даже имеют отношение к теме публикации. Отсеивать такие комментарии можно только вручную, просмотрев сайт, на который ссылается комментатор, оценив его содержимое и уместность комментария.
Июль 28th, 2008 at 19:50
@pepelsbey:
ОК, поле ввода спрятано, в тексте ссылку оставить нельзя — что им тогда делать? Все, оставить ссылку не получится.
Июль 28th, 2008 at 20:16
Я, к сожалению, не готов прятать от своих посетителей поле URL — мне интересно узнать побольше о человеке, который оставил комментарий. Так что для меня эта проблема решается только ручным модерированием…
Даже начал собирать коллекцию маразмов от этих биороботов:
— Дааа, скольно ж времени надо на такую статью? Не жалко вам? :)
— А что Вы скажете, еси я скажу, что все Ваши посты, не более чем выдумка?
— Читаю блог, и понимаю, что ничего не понимаю. Все так запутано.
— в Москве жара такая, а у Вас еще как-то хватает сил писать…
Октябрь 6th, 2008 at 17:50
Править системные файлы WP есть зло.
Лучше поправить тему чтобы до того, как галка будет нажата, поля “сайт”, “текст комментария” и сама кнопка были disabled.
Ноябрь 3rd, 2008 at 18:39
Суперское решение! Я не понимаю, что тут товарищи бунтуют. Конечно, править системные файлы зло, но код comment_author_link можно сделать в виде отдельного плагина, так и в виде строк в functions.php вашей темы.
Hooey, вы не против, если я сделаю небольшой плагинчик? Все права первооткрывателя ваши :)
Ноябрь 4th, 2008 at 20:33
Я у себя в дневнике столкнулся с этой проблемой.
Модерирую вручную комментарии. Убирал поле с сайтом — не помогает, спамеры все равно пишут сайт.
Но у меня комментарии не так часто оставляют, поэтому модерирование вручную это выход. А как быть, когда комментариев много?
Ноябрь 7th, 2008 at 14:08
Я сначала тоже вручную удаляла, потом это мне надоело.. обратилась к другу программеру, он что наколдовал и теперь все ок))
Декабрь 13th, 2008 at 21:00
Бугага , попробовал ввести без кнопочки комент , ржал ) Вообще если капча безобидная , например елементарно ввести цифру , то она не напрягает , больше напрягают типо : введите все буквы красные и прочая хрень .. Есть хороший способ просто переименовать переменную для формы комента , и сделать свою уникальную , ведь именно по имени спам ищет жертву .
И Кстати как сделать галочку такую ? Эт плагин чтоль ?
Декабрь 13th, 2008 at 23:31
@Серега: Нет, руками все. Несколько строчек кода.