window._wp_rp_static_base_url ='http://dtmvdvtzf8rz0.cloudfront.net/static/'; window._wp_rp_wp_ajax_url ="http://mixyblog.ru/wp-admin/admin-ajax.php"; window._wp_rp_plugin_version = '2.5'; window._wp_rp_post_id = '2965'; window._wp_rp_num_rel_posts = '7'; /* */ VK.init({apiId: 2857685, onlyWidgets: true});
CqQRcNeHAv

Спам в комментариях WordPress, как защитить комментарии с плагинами и без них

Tweet

Здравствуйте, уважаемые посетители блога Mixyblog.ru! Уже третья статья о комментариях. В этот раз нужно позаботиться не только о читателях в плане удобства комментирования, но и о вас самих. Речь пойдёт о злостных спамерах, которые задолбали меня своими предложениями юридических услуг, какими то фильмами и прочей ерундой!

Спам в комментариях WordPress

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

Что касается плагинов, то буду рассматривать только те, которые не используют ввод капчи. По мне дак нужно стремиться к максимальному удобству и простоте для посетителей вашего сайта и исключить все лишние действия по мере возможности. Плюс, все эти капчи могут зачастую глючить и не пропускать комментарии в независимости от того спам это или нет. С такой проблемой столкнулся и я. Благо, один добропорядочный человек победил этот плагин и сообщил, после чего он был удалён.

После этого я рассмотрю альтернативные методы защиты комментариев от спама, путём создания нового поля для ввода текста «textarea» и подменой им старого. Данный метод достаточно эффективный и предполагает отсутствие спама, а также дополнительной нагрузки на сервер, которую создают расширения. Итак, начнём с плагинов.

Защита комментариев от спама в WordPress с помощью плагинов

По умолчанию во всех движках раньше был предустановлен плагин против спама Akismet, который использует сторонний сервер для проверки комментариев на спам. Я его так и не использовал, не знаю почему, потом частенько видел отзывы, что он отправляет в спам нормальные комменты. В общем есть более простые и продуктивные плагины: Antispam Bee и Invisible capcha о которых и пойдёт речь в этой статье.

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

Первый плагин Antispam Bee, установить его можно из админ панели, перейдя в «Плагины» — «Добавить новый», вводите название и устанавливайте. Либо скачать с официального сайта, распаковать архив и загруить на сервер в папку с плагинами: «wp-content/plugins». Как это сделать можно прочесть тут.

Далее переходим в настройки: «Параметры» — «Antispam Bee». Там их довольно много, но менять я ничего не стал за исключением пункта «Статистика в консоли» и «Уведомление по email».

Плагин Antispam Bee

Статистика и постоянные уведомления мне ни к чему, поэтому галочки с этих пунктов пришлось убрать. Рекомендую в пункте «Помечать как спам, не удалять» галочку пока не убирать, сначала нужно протестировать правильность его работы прежде чем автоматически удалять все комменты помеченные плагином, как спам. Поставил я его, но радость была не долгой, так как у меня установлен плагин jQuery Comment Preview, добавляющий редактор для формы комментариев, с которым Antispam Bee к сожалению конфликтует. Поэтому перейдём к следующему.

Второй плагин, работающий по тому же принципу, Invisible capcha. Из админки добавить его не получится, поэтому скачайте его отсюда и загрузите в папку с плагинами. Затем активируйте и переходите в настройки. Настройки плагина находятся не как обычно в параметрах, а в пункте «Плагины» — «Невидимая капча» в админке Вордпресс.

Плагин invisible capcha

Как показано на скриншоте, настроек там очень мало и изменять ничего в принципе не нужно. Он не конфликтует с другими плагинами и работает прекрасно, поэтому можно оставить. Теперь, как и обещал покажу, как реализовать тоже самое, только без расширений.

Как избавиться от спама в комментариях на WordPress блоге без плагинов

Этот метод основывается на подмене полей для ввода комментария для спам-скриптов. Я скрою стандартное поле для коммента «comment» от посетителей и добавлю новое, изменив при этом его название, например «rimskij-comment». Посетители блога будут заполнять поле «rimskij-comment» а спам-боты, как и прежде будут искать и заполнять стандартное поле «comment», но теперь их сообщения не пройдут, так как в файле functions.php будет указан запрет на публикацию.

Дальше нужно будет редактировать файл functions.php, поэтому настоятельно рекомендую пользоваться редактором Notepad, чтобы вернуть все назад при возникновении каких-либо ошибок!

Итак, сначала нужно узнать, каким образом у вас в теме выводится форма комментариев, для этого открываем на редактирование файл comments.php, который находится в папке вашей темы «wp-content/themes/название темы/comments.php» и смотрим. В старых темах для этого присутствует строка:

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>

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

<?php comment_form(); ?>

В зависимости от того, как выводятся комменты, действия будут немного отличаться. Если у вас старая тема и за вывод отвечает «textarea», как у меня, тогда необходимо в том же файле «comments.php» сделать следующее:

<div class="comment">
  <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
</div>

<p><textarea name="rimskij-comment" id="rimskij-comment" cols="100%" rows="10" tabindex="4"></textarea></p>

Что тут изменено? Как видите кода для вывода формы стало два. Первому стандартному я присвоил класс «comment», чтобы в дальнейшем скрыть эту форму от посетителей в файле «style.css». Так же добавлена новая форма такая же, за исключением смены значения «name=» и «id=» на «rimskij-comment». После этого на страницах блога должно отображаться два поля. Далее скрываем стандартное поле от посетителей. Откройте файл стилей темы «style.css», который находится в папке «wp-content/themes/название темы/style.css» и поместите в самый конец этот код:

.comment {position: absolute; left: -1000px;}

В результате первая форма сдвинется влево на 1000 пикселей и посетители не будут её видеть, чего не скажешь о спам-ботах, которые будут заполнять именно её, так как ищут стандартное значение name и id, соответствующее «comment».

Теперь о том, как добавить второе поле для ввода комментария тем, у кого за вывод формы отвечает новая функция «?php comment_form(); ?». Поместите в файл темы «functions.php», который находится по адресу «wp-content/themes/название темы/functions.php» в самый конец, до символа «?>» следующий код:

//добавление нового поля для ввода комментария
add_filter('comment_form_defaults', 'change_comment_form_defaults');
 
function change_comment_form_defaults($default) {
  $commenter = wp_get_current_commenter();
  $default['comment_notes_after'] .= 
  '<p class="comment-form-rimskij-comment">
  <label for="rimskij-comment">Комментарий</label><textarea id="rimskij-comment" 
  aria-required="true" rows="8" cols="45" name="rimskij-comment"></textarea>
  </p>';
  return $default;
}
//добавление нового поля для ввода комментария

В результате появятся две формы. Скроем одну из них в файле «style.css» по аналогии с предыдущим, добавив в самый конец:

.comment-form-comment {position: absolute; left: -1000px;}

После этого, если не возникло никаких ошибок, придётся добавить ещё один код, чтобы запретить автоматический спам в комментариях на блоге. Добавьте в файл «functions.php», опять же в конец до символа «?>», этот код:

//проверка на спам
add_filter('pre_comment_on_post', 'verify_spam');
 
function verify_spam($commentdata) {
  $spam_test_field = trim($_POST['comment']);
  if(!empty($spam_test_field)) wp_die('Спаму нет!');
  $comment_content = trim($_POST['rimskij-comment']);
  $_POST['comment'] = $comment_content;	
  return $commentdata;
}
//проверка на спам

Теперь, если посетителем было заполнено видимое поле «rimskij-comment», то сообщение пройдёт, напротив при заполнении поля «comment» комментарий определяется, как спам и возникает ошибка. Название нового поля для комментария может быть любым, не обязательно «rimskij-comment». Можно написать свое, только измените его во всех, приведённых здесь кодах. На этом всё, подписывайтесь на обновления, чтобы не пропустить дальнейшие статьи. Желаю удачи!!!

Буду признателен, если вы воспользуетесь данными кнопками и подпишетесь на обновления!
8
Твитнуть
VK.Widgets.Like("vk_like", {type: "button"});
VK.init({apiId: 2857685, onlyWidgets: true});

2 комментариев

  1. Михаил Бурсин:

    Картинки к постам у тебя конечно сумасшедшие.

'2965' id='comment_post_ID' />

  • Рубрики

  • Реклама:

    Приобретайте мебель для кухни в интернет-магазине Мебель Всем.



    Популярные

  • //
    document.write("<\/a>")