Привет друзья, с момента написания последней статьи Как избавиться от спама на сайте прошло уже 12 дней. Эти дни я тестировал систему, о которой писал в прошлой статье, за эти 12 дней я сделал вывод — количество спама действительно сократилось, но спам не исчез полностью, меня это не устраивало и в связи с этим я стал искать методы как избавиться от спама.И нашел отличное решение!
В сегодняшней статье я как раз покажу, расскажу и напишу пошаговую инструкцию как закрыть доступ к Вашему сайту назойливым спамерским ботам. Если Вам как и мне надоели спамерские комментарии на сайте, тогда проделайте шаги по инструкции, которые я опишу чуть ниже.
Напомню еще раз, цель – избавиться от спама на сайте без применения различных анти-спамных плагинов, таких как Akismet, который как правило идет сразу с дистрибутивом wordpress.
Метод которым мы воспользуемся будет основан на подмене поля для ввода комментария, для спамеров мы оставим стандартное поля, но сделаем его невидимым, а для пользователей сайта добавим новое поле для ввода комментария.После чего, потом при добавлении комментария будем смотреть из какого поля поступил комментарий, и если из старого (поле ввода которым пользуются спамеры) – комментарий не пропускаем, а если из нового – почему бы и не пропустить комментарий от нормальных людей =)
На картинке таже схема, которую я описал выше.
Схема избавления от спама на сайте!
Итак опишу немного схему:
Есть 2 поля для ввода комментария (№1 и №2)
При нажатии на кнопку “Отправить комментарий” будем проверять если поле №1 заполнено это явно комментарий отправляет спам-бот, его мы не будем принимать.
Если поле №1 пустое, а заполнено поле №2 – тогда комментарий можно пропустить, он написан посетителем сайта, а не автоматическим спам-ботом.
Надеюсь объяснил понятно, теперь давайте реализуем это дело на практике.
Избавляемся от автоматического спама на сайте.
Нам необходимо добавить поле №2 на сайт.И тут нужно немного подумать.
Есть 2 варианта развития событий, если Ваш шаблон поддерживает новую функцию comment_form() (была введена в версии wordpress 3.0), и если не поддерживает.
Как это проверить?Легко – откройте файл comments.php и посмотрите есть ли в коде вызов этой функции, и если есть то да – Ваш шаблон действительно поддерживает функцию comment_form() и вам нужно воспользоваться 1 вариантом.
Если вместо вызова функции вы видите такие строки :
<textarea id="comment" class="textarea" name="comment"></textarea>
Значит действуйте с указаниями которые найдете в варианте №2.
После выполнения действий по варианту №1 или №2 будут еще действия, которые нужно выполнить всем – это добавить обработчик на нажатие клавиши “Отправить комментарий”.
Вы еще не передумали избавиться от спама на сайте?Нет?Тогда приступим=)
Вариант № 1.Шаблон использует функцию comment_form();
Открываем файл шаблона 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-real-comment"> <label for="real-comment">Комментарий</label><textarea id="real-comment" aria-required="true" rows="8" cols="45" name="real-comment"></textarea> </p>'; return $default; }
Проверьте еще раз, данный код не должен разрывать выполнение других функций в файле functions.php
Иначе могут возникать различные ошибки, и приводить к неработоспособности сайта в целом.
Теперь нам нужно добавить строку, которая скроет поле №1, для этого в файл стилей style.cssвставляем
.comment-form-comment {display: none;}
Вариант № 2.Шаблон не использует функцию comment_form();
Если шаблон не поддерживает функцию comment_form() не стоит расстраиваться, откройте файл comments.php Вашего шаблона и найдите код выводящий поле для ввода коментария похожий на этот:
<textarea id="comment" class="textarea" name="comment"></textarea>
И замените его на вот этот:
<div class="smo"> <textarea id="comment" class="textarea" name="comment"></textarea> </div> <textarea id="real-comment" class="textarea" name="real-comment"> </textarea>
Так, дополнительное поле добавили, теперь нужно скрыть поле ввода для спамеров, открываем файл style.css и добавляем там строку:
.smo {display: none;}
Финальный аккорд, добавляем функцию проверяющую из какого поля был отправлен комментарий.
Осталось совсем немного, открываем файл 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['real-comment']); $_POST['comment'] = $comment_content; return $commentdata; }
Вот и все, проделав эти простые действия вы избавитесь от автоматического спама на сайте НАВСЕГДА!!!
Друзья — жду Ваших комментариев, если что-то не получается задавайте свои вопросы!
Друзья получилось ли у Вас избавиться от спама на сайте этим методом?