Боремся с линкспамом в блогах на 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 или более ссылок», если вы этого еще не сделали.
Вот и все. Наверное, можно вместо всего этого и капчу поставить, но кому нравится каждый раз вводить циферки?