Защита WordPress от спама в комментариях. Убираем ссылки

Друзья, всем привет. Сегодня буду говорить о наболевшем. Уверен, каждый владелец сайта рано или поздно сталкивается с проблемой СПАМа. Как правило, это проблема появляется, когда блог начинает развиваться. Я вот поначалу, создал блог и не напрягался по этому поводу, ну был один–два спам-комментарий в день, так я их легко убирал вручную. Но, дальше хуже, спама всё больше и больше. Тогда я решил выбирать из двух зол.

Решил пожертвовать ресурсами сервера, но избавится от спама. Установил и активировал плагин . Результат меня порадовал, 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); ?> и переместите ее выше на несколько строк, а именно над строкой

"; return $default; } //END добавление своего поля для ввода комментария

Теперь скрываем наше стандартное поле comment , через файл «style.css» :

Comment-form-comment {display: none;}

Итак, с первой частью хака мы справились. Теперь у нас есть поле real-comment , которое видит и может заполнить посетитель, и стандартное поле comment , которое скрыто! В следующем шаге нам необходимо определить, какое из данных полей пропускать, а какое запрещать. Если заполнено видимое поле, то пропускаем, а если заполнено невидимое поле, то запрещаем. Для этого открываем файл functions.php и добавляем туда код:

2. Комментарии не через функцию «comment_form ()»

Если у вас комментарии выводятся не через функцию comment_form() , как у меня! В этом случае открываем файл comments.php и находим там код, выводящий поле для ввода комментария. Что-то похожее на:

Данный код необходимо заменить на:

Теперь надо скрыть стандартное поле для ввода комментария. Для этого откройте файл стилей вашего шаблона «style.css» и добавьте туда код:

No-spam {position: absolute; left: -1000px;}

No-spam {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; } //END проверка на спам

Вот в принципе и все! Теперь спам комментарии больше вас и ваш блог не потревожат. Если вы сомневаетесь, все ли сделали правильно, можете проверить работу данного хака по защите wordpress от спама. Для этого необходимо убрать из файла style.css внесенные изменения, обновить страничку блога, заполнить каждое поле комментариев и попытаться опубликовать комментарий!

Все вопросы, пожелания и замечания, пишите в комментариях к статье.

Сегодня мы поговорим о практически стопроцентной защите от спама в комментариях WordPress, которая возможна при помощи замечательного и очень простого плагина DCaptcha. Он представляет из себя самую простую капчу, которую только можно было бы придумать.

Посетителям вашего блога не надо будет разгадывать каких-либо ребусов — достаточно будет всего лишь поставить галочку в поле «Я не робот», при добавлении своего сообщения. бич всех WP блогов, вне зависимости от их посещаемости.

У меня в день бывало до 60-80 спамных сообщений (все они без ). Для борьбы с ними я использовал плагин Akismet. Он безусловно полезный, но работающий, однако, не безупречно. Иногда Akismet все же заносит в спам вполне легитимные сообщения. Поэтому у меня остро встала задача найти идеальное решение для этой нетривиальной проблемы. Что примечательно, это решение работает у меня уже почти четыре года и эту капчу до сих пор не пробил ни Хрумер, ни какой-либо другой спамерский софт.

DCaptcha — абсолютная защита от спама в WordPress

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

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

Поэтому я задумался над установкой капчи , т.е. специального WP плагина, который позволит оставлять сообщения только обычным пользователям, но режущий спамеров, которые в основном пользуются программным способом (хрумер и прочий софт). Многие виды капч уже не являются проблемой для таких программ. Однако, еще встречаются удобные капчи, которые пока не научились обходить в силу их сложности, либо в силу малого процента использования.

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

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

Удачным примером, на мой взгляд, является защита, предлагающая выполнить простейшие арифметические действия с четко изображенными цифрами и записать получившийся результат. Но еще более простой и удобной для пользователя является капча плагина DCaptcha, где нужно всего лишь поставить галочку в поле «Я не робот». Наверняка вы уже встречали такие варианты.

На данный момент у меня он работает стопроцентно, т.е. не пропускает вообще ни одного спамного комментария на протяжении почти четырех лет. Я даже отключил Akismet, т.к. на данный момент в нем нет нужды.

Установка

У меня в данный момент установлена бета версия DCaptcha 0.2b, которая, тем не менее, работает на сто процентов. За четыре года не было ни одного пробоя! Я даже забыл, что такое спам! Красота, но думаю, что как только данный плагин получит широкое распространение (и я, как не печально, способствую этому написанием данной статьи), то спамеры займутся им всерьез.

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

Установка этого расширения чуток отличается от стандартной. Нужно будет выполнить следующие действия:

  1. распакуйте архив с капчей dimoning.ru-captcha.rar, используя ftp-менеджер подключитесь к вашему хосту и загрузите папку dimoning.ru-captcha в папку с плагинами wp-content/plugins/
  2. войдите в админку и выберете вкладку «Плагины»- «Inactive»
  3. найдите строку с DCaptcha и активируйте его
  4. теперь (по ссылке описано, как это сделать в Файлзиле) на папку /wp-content/plugins/dimoning.ru-captcha/num
  5. затем нужно в адресной строке браузера ввести следующий Урл http://vash_site.ru/wp-content/plugins/dimoning.ru-captcha/install.php и нажать «Enter». В результате будет сгенерирован уникальный код , позволяющий защитить капчу от взлома

После установки обязательно проверьте, работает ли капча. Для этого просто зайдите на свой блог как обычный посетитель и попробуйте оставить комментарий. Если вам захочется изменить в настойках DCaptcha надпись «Это не спам», то для этого нужно будет открыть на редактирование файл /wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php в текстовом редакторе.

Найдите с помощью встроенного поиска используемого вами текстового редактора строку:

Это не спам.

и внесите нужные вам изменения. Я, например, сделал надпись красного цвета. Для этого нужно будет всего лишь добавить в файл таблицы каскадных стилей CSS вашей темы оформления wp-content/themes/название_вашей_темы_оформления/style.css следующее свойство:

#dcaptcha { color: red; }

Наверное, многие из вас, дочитав статью до этого места, уже успели установить и настроить это расширение.

Однако, при установленном и активированном плагине спам-комментарии в базу данных писАться не будут, но, правда, это справедливо только в том случае, если у вас отключена, так называемая, «Корзина» , которая появилась в WordPress начиная с версии 2.9. При активной «Корзине» весь спам, отсекаемый этой капчей, будет благополучно падать в корзину и накапливаться там до тех пор, пока она автоматически не очистится.

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

Кстати, именно начиная с версии WordPress 2.9 плагин DCaptcha перестал отсекать спам , что для меня явилось очень большой и неприятной неожиданностью. В какой-то момент я неосмотрительно обновился до версии 2.92 и обнаружил, что стали появляться в большом количестве гадости, от которых я уже успел отвыкнуть.

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

Борьба со спамом в Вордпресс с помощью файла htaccess

Первое, что я решил попробовать, это возможность блокировки спам-ботов через «htaccess». Название этого файла начинается с точки и если его в корневой папке вашего хоста не обнаружится, то следует обязательно создать, ибо возможностей у него очень много и некоторые из этих возможностей вам могут понадобиться. Давайте я немного расскажу о файле «htaccess».

«htaccess» предназначен для, так называемого, децентрализованного управления веб сервером Apache. Дело в том, что в 99 процентах случаев ваш проект будет размещен на хостинге под управлением сервера Apache. Возможности этого сервера всеми хорошо изучены и к тому же он бесплатен. Так вот, для того, чтобы вебмастер (вы), не имеющий доступа к рычагам управления Apache, тем не менее имел возможность управлять некоторыми аспектами работы сервера и был придуман этот файл.

Все директивы (команды), прописываемые в "htaccess, будут применены только к содержимому той директории (папки), в которой находится данный файл. Следовательно, если вы создадите в корневой папке своего хоста «.htaccess», то сможете давать команды серверу Apache, которые будут применены ко всему вашему сайту. Этот файл можно будет создать так же и в любых других директориях движка и, например, запаролить через него доступ к этим каталогам.

Не многие знают все директивы (команды) и правила их написания в «.htaccess», но этого и не требуется. Зачастую вам нужно будет только скопировать уже готовый код из какого-либо примера и заменить в нем данные на те, что подходят вам.

Если файла такого в коневой папке WordPress вы не увидите, то возможно, что его там и нет, но сначала вам нужно будет в этом убедиться. Для работы с сайтом по FTP я использую (да и вам тоже советую) замечательную программу FileZilla (см. ссылку выше). После подключения к своему хосту по FTP откройте корневую папку (обычно она называется либо PUBLIC_HTML, либо HTDOCS) и проверьте наличие в ней файла «htaccess».

Если он там будет, то просто откройте его на редактирование, а если вы такого файла в корневой папке не найдете, то попробуйте в программе FileZilla выбрать из верхнего меню «Сервер» — «Принудительно отображать скрытые файлы». Если и после этого искомого объекта в корне вы не найдете, то создайте у себя на компьютере пустой текстовый файл, назовите его как-нибудь и скопируйте на сервер хостинга. После чего переименуйте его в «htaccess».

Существует два способа блокировки спам-сообщений в htaccess. Я использовал такой код:

order allow,deny allow from all deny from 109.74.85.150 deny from 124.162.118.179 deny from 124.238.242.103 deny from 124.238.242.36 deny from 143.248.3.35

Т.е. здесь вы перечисляете IP адреса спамеров, которые забивают ваши комментарии всяческим мусором. IP адрес компьютера, с которого был отправлен комментарий, можно увидеть в админке Вордпресс при просмотре комментов:

Минусы такого способа защиты, наверное, очевидны. Во-первых, вам придется совершить очень большое количество операций копирования IP адресов спамеров из админки в приведенный выше код файла «htaccess». Во-вторых, спамеры тоже не лыком шиты и активно используют прокси сервера, что существенно увеличивает список адресов, которые вам нужно будет добавить черный список.

Я ухитрился вручную насобирать более 400 IP адресов спамеров. Что мне это в результате дало? Поток спама уменьшился с сотен до десятков. Уже существенно, но очень уж трудозатратно и утомительно. Не намного лучше, чем вручную перелапачивать тоны хлама.

Второй способ блокирования спамеров заключается в добавление в «htaccess» IP адресов всяких редисок с директивами, позволяющими фильтровать спам по ряду признаков. Сам я этот способ не пробовал, ибо сумел таки заставить работать мой любимый плагин DCaptcha под Вордпресс 2.92, о чем сейчас вам и расскажу.

DCaptcha работает на современных версиях WordPress

Для того, чтобы заставить DCaptcha корректно работать на современных версиях WP, как оказалось много не надо. Просто подключитесь по FTP с серверу хостинга, где у вас размещены файлы вашего блога, и откройте на редактирование файл Dimoning.ru-captcha:

Найдите в нем строку:

и замените в ней «delete» на «trash», чтобы в результате получилось так:

Wp_set_comment_status ($id, "trash");

Что же мы получим в результате проведения этих изменений в коде плагина? Ну, во-первых, он начнет работать. Это уже хорошо, но давайте посмотрим повнимательней, а что же мы, собственно, сделали и куда теперь будут попадать комментарии, которые спаморезка пометит как спамные?

Начнем, пожалуй, со второй части вопроса. Порезанные сообщения, при тех настройках, что мы задали чуть выше, попадут либо в разряд «Спам» (в случае замены «delete» на «spam»), либо в разряд «Корзина» (в случае замены «delete» на «trash»).

Т.е. получается, что спам все равно записываться в базу данных WordPress, но просто с пометкой. Легче ли нам станет от этого или нет? С одной стороны, конечно же, легче. Ведь мы теперь смело сможем, зайдя в админку, очистить все содержимое корзины или спама, не боясь удалить сообщения от реальных читателей. Однако, весь этот хлам будет создавать дополнительную и ненужную нагрузку на сервер хостинга.

Даже если вы отключите корзину в Вордпрессе (о том, как это сделать можно прочитать в конце статьи), то все равно сообщения спаммеров все равно будут в нее падать (хотя, ее как бы и нет). Это легко будет проверить, включив выключенную раннее корзину (вы увидите в ней кучу всего, что порезано плагином DCaptcha).

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

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

Wp_set_comment_status ($id, "delete");

Если мы обратимся к кодексу WordPress , то увидим, что для этой функции WP_SET_COMMENT_STATUS в новых версиях (начиная с версии 2.92) уже нет такого значения «delete». На данный момент можно использовать только значения: "hold", "approve", "spam", or "trash".

Т.е. удалить порезанные плагином сообщения с помощью функции WP_SET_COMMENT_STATUS мы уже не сможем, как это можно было сделать с помощью выбора значения "delete" в старых версиях WP.

В версиях движка, начиная с 2.92, мы можем с помощью функции WP_SET_COMMENT_STATUS только переместить мусорные сообщения в корзину (выбрав значение "trash"), либо пометить их как спам (выбрав значение "spam").

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

/wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php

замените строку:

Wp_set_comment_status ($id, "delete");

на строку

Wp_delete_comment ($id);

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

Как отключить корзину в WordPress

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

Найти его вы сможете в корне удаленного хоста, подключившись к северу вашего хостинга по FTP. Откройте файл WP-CONFIG.PHP на редактирование и добавьте в него строчку кода:

Define("EMPTY_TRASH_DAYS", 0);

Если вы по каким-либо причинам не захотите отключать корзину в Вордпресс на совсем, а только захотите уменьшить время хранения в ней записей, то вставьте в WP-CONFIG.PHP следующую строчку кода:

Define("EMPTY_TRASH_DAYS", 3);

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

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Simple Counters и Category and Page Icons - красивые счетчики RSS и Twitter, а так же иконки для категорий и страниц в WordPress
Comment Toolbar - добавляем в комментарии WordPress возможность ответа и цитирования
Снижение потребляемой в WordPress памяти при создании страниц - плагин WPLANG Lite для подмены файла локализации
Подсветка кода и кнопки форматирования комментариев в WordPress - SyntaxHighlighter и Comment Form
Google XML Sitemaps - создание карты сайта для WordPress
Создание в WordPress карты блога для посетителей (плагины Sitemap Generator и WP DS Blog Map)
Создание списка похожих материалов в WordPress (с миниатюрами) при помощи плагина Related Posts для внутренней линковки
Как проверить сайт на битые ссылки - Xenu Link Sleuth, плагин и онлайн-сервис Broken Link Checker, а так же поисковые системы
Subscribe To Comments для WordPress - подписка на комментарии к статьях в Вордпресс Как в плагине Yet Another Related Posts убрать прозрачный пиксель http://yarpp.org/pixels и изменить надпись Похожие материалы

На одном из моих проектов, где доступна регистрация пользователей и постинг заметок от их имени, значительно увеличилось количества спама. И если с похожей проблемой для комментариев помогает справиться , то в данном случае пришлось искать другое решение. Раньше я удалял новых пользователей по одному через админку вордпресс (по 10-20штук в неделю это не проблема). Однако сейчас спам регистраций насчитывается больше сотни за пару дней. Тратить на это время каждый раз неохота, поэтому решил всерьез разобраться с негодниками. Пост состоит из двух частей — первая защита от спам регистраций, а вторая — удаление неактивных пользователей.

Защита от спам регистраций

Очевидно, что для этого решения будем использовать каптчу. Как-то в блоге я публиковал заметку про , где были:

  • Captcha Code — картинка с простыми цифрами (такие ломают чаще всего).
  • WP-reCAPTCHA — плагин относительно старый плюс для работы надо получить ключ.
  • Secure CAPTCHA — еще один древний модуль, что не обновлялся более 2х лет.
  • Captcha by BestWebSoft — математическая каптча.
  • SI CAPTCHA Anti-Spam — самый популярный модуль со множеством настроек.

Ничего плохого не могу сказать про последний вариант, просто мне хотелось настроить все максимально быстро и просто. В итоге выбрал Captcha by BestWebSoft, где пользователю нужно ввести недостающее число в уравнении.

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

После установки плагина Captcha by BestWebSoft нужно указать некоторые настройки каптчи.

Здесь определяете:

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

После установки настроек, сохраняете их.

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

Update 15.07.2015. К сожалению, плагин Captcha by BestWebSoft, а затем и SI CAPTCHA Anti-Spam не смогли защитить от спам регистраций на сайте. Поток ботов уменьшился, но в целом результат каптчи не удовлетворительный. Пришлось искать другое решение — . Данная каптча от Google действительно справилась со своей задачей, за несколько дней не было ни одного случая регистрации ботов. Рекомендую!

Удаление неактивных пользователей

  • найти пользователя по логину, который отображается для последней добавленной спам заметки;
  • кликнуть «Удалить» по соответствующему юзеру в результатах поиска;
  • отметить галочку «Удалить все посты» для данного пользователя и подтвердить удаление.

Как видите, тут нужно сделать далеко не один клик, плюс ждать загрузку той или иной страницы админки. Опять же, если спам регистраций у вас с 10-ток, то выполнить все эти действия не проблема, но если пользователей накопилось пару сотен/тысяч, нужно использовать массовое удаление.

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

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

Что же касается Inactive User Deleter, то работать с ним достаточно просто. После установки заходите в раздел «Пользователи» пункт меню Inactive users.

Здесь есть несколько параметров выборки юзеров:

  • пользователи без одобренных комментариев;
  • имеющие спам комментарии;
  • не разместившие никаких записей на сайте;
  • созданные более чем Х дней назад;
  • уровень пользователей;

Для удобства есть также выбор сортировки результатов. Хорошо, что по каждому юзеру отображается вся статистика — число постов, комментариев. Для массового удаление просто отмечаете несколько (или всех сразу) пользователей. Единственное, чего не хватает — выборки пользователей по дате создания. То есть модуль Inactive users ориентирован в первую очередь на старые регистрации, которые спустя некоторое время так и не были активны. Вывести, скажем, всех юзеров за последние 2-3 дня не получится (только через phpMyAdmin и редактирование базы данных напрямую).

Напоследок пару слов о модуле Stop Spammers Spam Prevention , который достаточно часто упоминают при борьбе со спам регистрациями.

Плагин позволяет бороться со спам регистрациями и спамом в комментариях. Он содержит около 20-ти разных проверок, позволяющих предотвратить попытки спама на вашем сайте. Если же они выявлены, то пользователю всегда предоставляется второй шанс — ввод каптчи (с помощью разных плагинов). Каптча позволяет юзеру подтвердить, что он не бот или спамер. В принципе, решение интересное, хотя я его лично и не использовал. Возможно, вам в работе пригодится.