Друзья, всем привет. Сегодня буду говорить о наболевшем. Уверен, каждый владелец сайта рано или поздно сталкивается с проблемой СПАМа. Как правило, это проблема появляется, когда блог начинает развиваться. Я вот поначалу, создал блог и не напрягался по этому поводу, ну был один–два спам-комментарий в день, так я их легко убирал вручную. Но, дальше хуже, спама всё больше и больше. Тогда я решил выбирать из двух зол.
Решил пожертвовать ресурсами сервера, но избавится от спама. Установил и активировал плагин . Результат меня порадовал, 99% защиты от спама. Хотя это может быть и 100%. Но, у этого плагина свои алгоритмы работы и иногда хорошие комментарии попадают в спам.
Поэтому я не стал автоматически очищать папку спам, проверяю её и выдёргиваю хорошие комментарии, если они туда попали. Ну и казалось бы всё хорошо, так вот теперь надоело просматривать папку СПАМ. В последнее время у меня не так много времени, и успеваю просматривать блог пару раз в день. Так, за день у меня бывает до 250 спам-комментариев. Вот пример, сегодня до обеда уже 78 комментариев в папке спам.
А ещё есть «чудесники», которые занимаются ручным спамом. Но для них есть свои рычаги воздействия. Мы же поговорим, как избавиться от автоматического спама, рассылаемого спам-ботами. И при этом не придётся чистить папку СПАМ.
Суть метода
Этот метод, прежде всего, хорош тем, что на 100% защищает от СПАМа и при этом без плагина. А плагин выполняющий до этого эту защитную функцию вы сможете отключить и тем самым ускорить работу вашего сайта/блога.
А раз нет плагинов, значит, придётся поковырять в исходном коде шаблона. В общем, нужно будет сделать подмену полей формы комментария. Таким образом, у вас будет фактически две формы комментариев, одну будут заполнять посетители, а другую будут бомбить спамерские программы.
Как создать подмену формы комментария
Шаг 1. Определяем, какой функцией выводится поле «Текст комментария»
Для этого откройте любую вашу статью, перейдите к форме комментария и нажмите правую кнопку мышки на поле для ввода текста комментария.
В контекстно-зависимом меню нажмите на пункт «Исследовать элемент» (или что-то подобное, в разных браузерах по-разному).
А теперь посмотрите на исходный код:
Во многих темах за вывод текстового поля в форме отвечает textarea, поэтому в исходном коде вы увидите вот такую строку, или что-то похожее.
Эту строчку кода нужно будет найти в файле comments.php . Если подобной строки кода у вас нет, то реализация вашего случая будет описана в конце статьи.
Шаг 2. Создаём дубликат текстового поля «Текст комментария»
Переходим в административную панель WordPress – раздел «Внешний вид» — «Редактор» . Открываем для редактирования файл comments.php . Находим в этом файле текстовое поле для ввода комментария. Нажмите CTRL+F и ищите textarea.
Теперь нужно скопировать весь этот код и вставить его ниже. У вас должно получится две одинаковые строчки кода.
Кстати, если у вас в форме это поле пустое, как у меня, но вы хотите вставить в него подсказку для ваших читателей, то можно добавить вот такой атрибут:
Placeholder="Введите текст комментария"
Тогда вся строчка кода будет выглядеть вот так:
Сохраняем внесённые изменения.
Шаг 3. Скрываем оригинальное поле «Текст комментария»
Сейчас, если вы посмотрите на свою форму комментария, то у вас будет два текстовых поля. Одно из них нужно скрыть. И поможет нам в этом идентификатор (id). Этот идентификатор можно использовать для придания стиля. Хотя можно определить стиль прямо в строке с кодом текстового поля, но мы это будем делать в файле style.css . Это тоже ради поддержания высокой скорости загрузки сайта.
Итак, открываем файл таблицы стилей style.css. Нам нужно добавить стиль, который будет скрывать одно текстовое поле. Этот стиль можно добавить в самом низу этого файла.
/*скрываем форму комментария*/ #comment {display:none;}Шаг 4. Подключение фильтра для проверки комментариев.
На этом шаге нам нужно подключить фильтр, который будет проверять, какое текстовое поле, было заполнено и на основе этого будет либо передавать комментарий на блог, либо удалять его.
Для этого открываем файл функции темы (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["main-comment "]); $_POST["comment"] = $comment_content; return $commentdata; } /*фильтр для спама*/На всякий случай сделайте копию этого файла перед внесением изменений. И будьте осторожны и внимательны при вставке кода, обращайте внимание, куда вы его вставляете, чтобы не затереть ни скобок, ни запятых и так далее.
Примечание: если для атрибутов name и id вы использовали предложенную мной приставку main, то в этом коде менять ничего не надо. Если же вы использовали свою приставку или свой набор символов, то необходимо изменить подсвеченный цветом фрагмент кода.
Вот и все готово теперь нужно подождать и проанализировать, сколько комментариев попало в папку спам. По идее ваша папка спам будет пуста, а на блоге будут появляется только одобренные комментарии.
Что делать если текстовое поле формируется не через textarea
Если при просмотре файла comments.php, вы не обнаружили текстового поля textarea. Значить у вас стандартная форма комментариев выводится через функцию comment_form . Как правило, работа этой функции прописана в файле функции темы (functions.php ). Вы легко сможете её найти с помощью поиска CTRL+F. В общем, вам нужно сделать дубликат формы комментариев. Для этого найдите в файле подходящее место, как я показывал выше, и вставьте вот этот код:
/*новая форма комментария*/ 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; } /*новая форма комментария*/
Теперь вставьте код для проверки на спам, который я приводил в четвёртом шаге. Сохраняете файл функции темы (functions.php) и переходите в файл таблица стилей (style.css).
Здесь нужно добавить стиль для сокрытия стандартного текстового поля ввода комментария.
Comment-form-comment {display: none;}
Всё, задание выполнено. Теперь спам не пройдёт.
Кстати, если ваша стандартная форма отличается по ширине и по высоте, то измените параметры строк и колонок (rows="8" cols="45") .
Итак, дорогие друзья, подвожу итоги. Статью я писал два дня, и за это время не одного спам-комментария. Папка СПАМ пуста и я очень доволен. Так что берите метод на вооружение и не тратьте своё время на просмотр спам-комментариев. А ещё советую посмотреть статью о создании . Принцип защиты у них схожий.
Также посмотрите видеоурок, так этом метод станет для вас ещё понятней.
На этом у меня сегодня всё, желаю вам удачи и 100%-е отсутствие спама. Всем пока, и до встречи в новых статьях и видеоуроках.
Дополнение: после обновление WordPress до версии 4.4 и выше, этот способ нуждается в доработке. И вот на эту тему.
С уважением, Максим Зайцев.
Ребята привет! С вами Саша Борисов! Скажите, бывали ли с вами такие случаи, заходишь на чей-то блог, читаешь классную статью, хочешь оставить комментарий и так лень напрягать мозги для того чтобы вводить капчу (защиту от спам-роботов)? Я думаю не раз.
Ну вы же не спамер правда? А вот в целях защиты ее вводить нужно и нужно это для владельца блога, а не для вас. Кстати из-за того, что на многих блогах стоит защита от спама (капча), статьи мало комментируют. Это факт. В этой статье я поведаю вам о том, от спама в комментариях без капчи, а так же расскажу какие вообще существуют плагины для борьбы со спамом на движке wordpress.
Для тех кто в танке (для новичков) хочу объяснить что вообще такое капча. Капча — это какая-то маленькая логическая задачка, находящаяся рядом с формой добавления комментария к статье или странице блога, которая защищает ваш блог от спам-роботов, так как они создают значительную нагрузку на блог, а так же, извините за выражение, засирают ваш ресурс всякими рекламными ссылками, дибильным текстом и т.д.
Спам-робот — это не человек. Это программа, в которую заложены определенные действия, а именно — заходить на чужие ресурсы и при виде какой-то формы где можно оставить какое-то сообщение, обязательно нагадить.
Изначально на движке wordpress не установлено ни какой защиты от спама в комментариях, ни каких защитных кодов и плагинов в нем нет. Это нужно срочно исправлять. Когда ваш блог еще молодой, то конечно же спам-роботы не будут так сильно атаковать вас, но вот когда ваш ресурс разрастется, когда на нем будет большая посещаемость и т.д., вот тогда вы поймете как важна защита от этих негодяев.
Итак начнем. Какие лично я знаю плагины защиты от спама в комментариях.
1. Math Comment Spam Protection — хороший плагин защиты от спама. Сам им пользовался раньше пока не узнал о более эффективном плагине защиты от спама, о нем я расскажу позже. Плагин Math Comment Spam Protection создает математическую задачу при добавлении комментария.
Перед тем как оставить комментарий на блоге человек должен решить определенный математический пример, допустим: сколько будет 4 + 7, 6 + 13, 2 + 5 и т.д.
5. Simple CAPTCHA — говорят отличный плагин для защиты от спама. Эта капча является одной из самых эффективных капч для wordpress. Не знаю почему, но лично на моем блоге она не работает. Не то что не работает, ее вообще не видно. Скачал плагин, закинул в папку с плагинами, а wordpress его не видит. Странно. Ну да ладно, не беда, есть другие плагины.
Если у вас плагин будет работать — супер! Установка та же. Скачиваете плагин , закидываете в папку с плагинами и активируете.
6. SI Captcha Anti-spam — еще один плагин защиты от капчи. Эффективный, но тяжелый, в смыле вести много кб. Скачать плагин . Установка все та же. В админке можно настроить плагин на русский язык. В капче есть возможность прослушать звук. =)
7. — классный плагин защиты от спама. Он не просто красивый он еще и призывает людей к тому чтобы оставить комментарий на вашем блоге. Для того чтобы читатель оставил коммент ему нужно крутить картинки и поставить их вертикально. Забавно да? Мне лично очень нравиться =)
Для этого откройте файл comments.php темы вашего блога, найдите там строчку — ID); ?> и переместите ее выше на несколько строк, а именно над строкой
Если поиски не увенчаются успехов (в различных модификациях тем код может различаться), то поищите строку, которая содержит comment_author_url, name=»url» или id=»url» и внешне схожа с вышеупомянутым php текстом.
Защищаемся от спам-программ
Автоматический скрипт обходит саму страницу, на которой и находятся формы для заполнения. Он использует определенный алгоритм post запросов, который сводит в нет удаление URL блока. Однако, можно также поставить палки в колёса для таких ботов. Для этого зайдите в корневую папку ФТП вашего проекта и отредактируйте файл wp-comments-post.php. Необходимо найти строку, которая начинается с $comment_author_url и заменить её на $comment_author_url = «»;
Подытожим
На сегодняшний день не существует идеальной системы, которая способна в полной мере удовлетворить дизайнерские идеи, требования программиста, а самое главное — SEO оптимизатора. Любой движок необходимо дорабатывать — это нормально! Правила, которые приведены в вышеупомянутом тексте позволяют отредактировать лишь один, однако весьма важный компонент. В последующий редакциях мы ещё не раз затронем защиту wordpress не только от спама, но и от других действий черных оптимизаторов. Развивайте свой сайт и не позволяйте на этом наживаться другим!