Leon1010

Я в Соц.сетях:

Теги:

Ссылки

Эфективкная борьба со спамом в WordPress

Проблема. Спам в комментариях — общая головная боль. Akismet — неплохое решение, но почему бы сразу не блокировать спамеров вместо того, чтобы помечать подозрительные сообщения? Предлагаемый код ищет заголовок запроса HTTP referrer (страницу, откуда пришел запрос) и автоматически блокирует комментарий, если она некорректна или не определена.

Решение. В файл «functions.php» вашей темы вставьте вот этот код:

Вот, собственно, и все. Сохранив файл, выводим блог на новый уровень защиты от спама.

Анализ кода. Код автоматически отклоняет запросы на публикацию комментариев, исходящие от браузера (обычно бота) без заголовка запроса HTTP referrer. Проверка выполняется с помощью массива «PHP $_SERVER[]». Если заголовок не определен или неверен, вызывается функция «wp_die», и выполнение сценария прекращается.

Данная функция привязывается к реализованной в WordPress функции «check_comment_flood()». Таким образом, мы может быть уверены, что обращение к функции «check_referrer()» будет выполняться при каждой публикации комментария.

________

Вторая беда это так называемые Обратные ссылки и уведомления. На мой взгляд, совершенно лишняя функция в движке, так как её используют только спамеры.

Для того, чтобы её отключить, нужно проделать две штуки — запретить эти функции в новых постах и отключить уведомления в старых.

Чтобы запретить оповещать другие блоги о ссылках на них, нужно отключить эту функцию в настройках обсуждений, там же отключается и получение уведомлений и обратных ссылок с других блогов в ваш.
tiaurus-2011-07-07_114817
Однако эта функция будет работать только для новых постов, а в старых прием уведомлений останется включенным. Можно будет выборочно выключать их при редактировании старых постов.
tiaurus-2011-07-07_115454
Вручную редактировать все старые посты — дело муторное, и практически нереальное, если их несколько тысяч. Помочь отключить прием уведомлений и обратных ссылок в старых постах поможет простой sql запрос. Нужно зайти в phpMyAdmin, и ввести в запрос к базе данных такую команду:
UPDATE wp_posts SET ping_status="closed"

После этих двух шагов вы можете забыть о спаме в трекбэках.

Запись опубликована в рубрике Кодинг с метками , .