Защита от спама в вордпресс. Плагины защиты wordpress от спама в комментариях

Всем привет. Если у вас есть сайт на WordPress, то вам должна быть знакома проблема заполонения своего сайта спам комментариями. Конечно, со спамом в WordPress отлично справляется плагин Akismet, который по умолчанию там установлен, но проблема этого плагина в том, что он частенько помечает как спам вполне человечные комментарии от реальных людей.

До недавнего времени я постоянно проверял папку со спамом на наличие ошибочно попавших туда комментариев. Обычно в день у меня на блоге в спам попадало около 50-70 комментариев . В конце концов меня это утомило, и я начал искать способ, который бы позволил мне избавиться от автоматического спама раз и навсегда. И я такой способ нашел 🙂 .

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

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

Суть этого способа в том, что мы создаем новое поле для комментария с новым именем, а старое поле спрячем от глаз посетителей. Спам-бот, по привычке, будет вводить комментарий в стандартное поле, так как настроен на это, но отправить этот комментарий он не сможет 🙂 . В то же время обычные посетители будут вводить комментарии в форму с новым именем, и при этом никаких изменений они даже не заметят.

Итак, перейдем к реализации этого метода. Существует два пути развития событий: либо у вас старая версия движка, и комментарии у вас выводятся через html код, либо у вас свежая версия, и комментарии выводятся через функцию comment_form() .

Первый вариант

Рассмотрим вариант, когда комментарии выводятся через html код.

Первое, что нам нужно сделать, это найти в файле comments.php , в папке с темой оформления, строку, отвечающую за вывод поля для ввода комментария. Обычно оно выглядит так:

Эту строчку нужно заменить на следующую конструкцию:

Следующим шагом нам нужно изменить стили для этих форм. Для того, чтобы скрыть старую форму от глаз посетителей, добавляем в файл style.css :

Spamform {display: none;}

Если к вашей старой форме комментариев были привязаны стили, то вам нужно заменить в style.css все id=»comment» на id=»newcomment» , тогда ваша новая форма комментариев будет выглядеть как прежняя.

Ну и последним шагом вставляем в конец файла functions.php (до знака ?> ) следующую функцию:

//spam_detect 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("no-spam"); $comment_content = trim($_POST["newcomment"]); $_POST["comment"] = $comment_content; return $commentdata; } //end

Второй вариант

Теперь рассмотрим второй вариант, когда комментарии выводятся при помощи функции comment_form () .

Здесь алгоритм практически такой же как и в предыдущем пункте. Все, что нам нужно сделать, это добавить две функции в файл function.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"] .= "

"; return $default; } //end //spam_detect 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("no-spam"); $comment_content = trim($_POST["newcomment"]); $_POST["comment"] = $comment_content; return $commentdata; } //end

Первая функция добавляет новое поле для комментирования (аналог

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: