Защита от спама в wordpress
Заметки по Wordpress

Защита от спама в WordPress без плагина

Защита от спама в WordPress

Защита от спама в WordPress – рано или поздно все блогеры задаются этим вопросом. Есть разные способы борьбы со спамом.Самый простой, но не самый лучший способ это установить палагин.

Вот парочка самых популярных:

Вместо этого я просто сделал эту защиту от спаса вручную – способ очень простой.

Способ заключается в том, что мы скрываем стандартное поле для ввода комментария ‘comment‘ и заменяем его на новое созданное  поле ‘real-comment‘. Для посетителей  все останется без изменений  они и не заметят разницы, а вот спам-скрипты при  попытке  заполнить стандартное поле с именем ‘comment‘ будут попадать на фильтр запрещающий им комментировать.

[spoiler name=”Необходимые данныеДля открытия – нажмите“]
1. Проверка на спам.

Начнем мы с добавления фильтра спама, у нас в форме комментария будет 2 поля. Одно скрытое – это стандартная форма ‘comment‘ и второе поле – это новое созданное нами поле. Добавляем функцию которая будет определять, если поле было заполнено комментатором – это видимое в шаблоне, то комментарий пропускается, а если скрытое, то публикация запрещается.

Для этого вставим такой код в functions.php:
[crayon lang=’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;
}
[/crayon]

2. Добавляем в шаблон новое поле для ввода комментария.

Существует два варианта как это можно сделать:

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

[crayon lang=’html’]

[/crayon]и заменяем его на код:[crayon lang=’html’]


[/crayon]

2. Второй вариант, если в шаблоне для вывода формы комментариев Вы используете функцию comment_form(). Для добавления нового поля откройте файл шаблона functions.php и добавьте туда код:

[crayon lang=’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;
}
[/crayon]

На этом все, готово. У нас есть видимое поле для ввода комментария ‘real-comment‘ (можно использовать любое имя), а стандартное ‘comment‘ поле скрытое от посетителей. И есть функция которая фильтрует эти поля. Больше автоматический спам вас не побеспокоит.

Проверить работу  защиты от спама можно  на страничке  которую создал –  Kama

[/spoiler]

Не забываем оставлять свои комментарии без спама : )

 

 

Новые посты

Кнопка twitter – Как добавить кнопку twitter на свой сайт

Гордеев Игорь

Кнопки “Удалить” и “Спам” для комментариев wordpress

Гордеев Игорь

Самые комментируемые посты в wordpress за месяц

Гордеев Игорь

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

Anna 27.01.2012 / 15:21

Статья отличная. Сама этим вопросом занималась недавно, так как “Akismet” мне жутко не нравился, перепробовала много других плагинов и остановилась на “Antispam Bee”.
Мне у этого плагина сама идея понравилась: невидимое для пользователя поле-ловушка, которое заполняют боты, потому что действуют на уровне кода, да плюс еще идет проверка: из браузера ли заполнялась форма или нет, а так же сверяется IP комментатора и блога. И никаких капчей, утомительных для читателя.
Но плагин есть плагин. Стараюсь их поменьше использовать и там где можно заменить кодом.
Так что автору статьи ОГРОМНОЕ СПАСИБО! Прекрасная альтернатива “Antispam Bee” Изящное и легкое решение.
Да и вообще отличный сайт, столько полезной информации. Добавила в закладки.
Автору респект!!!

Ответить
Гордеев Игорь 28.01.2012 / 16:28

Спасибо Вам за отзыв! Стараемся делать сайт лучше. Так что все еще впереди. 😛

Ответить
Сергей 28.01.2012 / 14:24

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

Ответить
Станислав 27.02.2012 / 06:37

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

Ответить
Гордеев Игорь 27.02.2012 / 09:39

Советую использовать данную функцию и надежнее и свой блог облегчите от плагинов.

Ответить
Артём 04.03.2012 / 01:18

Отличная статья , она мне как раз и была нужна.
Спам наваливал на мой блог БЕСКОНЕЧНО.Но благодаря этому видео все обошлось , хоть и мучался 2 месяца. Нужно срочно скинуть этот сайт своим друзьям. Еще раз огромное спасибо за эту статью. Все было понятно и интересно.

Ответить
Гордеев Игорь 04.03.2012 / 10:12

Рад, что вам помог Артём. А что решили поделиться с друзьями сайтом очень благодарен. Ведь чем больше он будет востребован, тем больше будет мотивации создавать новые видеоуроки и заметки.

Ответить
Keclent 10.04.2012 / 19:30

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

Ответить
Гордеев Игорь 10.04.2012 / 21:24

Да метод хорошо и проверен временем. Советую всем!

Ответить
Мила 28.06.2012 / 17:45

Я не сильна в php, поэтому вопрос: как именно указанная функция фильтрует поля?
Нет ли возможности спамерам добавлять свой комментарий прям в базу?

Ответить
Мила 28.06.2012 / 17:57

Кстати, форма проверки мне выдала надпись:
“Forbidden
You don’t have permission to access /wp-comments-post.php on this server.”

Понятн – это значит, что спамер не пройдет.

Но почему такая надпись, а не та, которую указали вы?

или это связано с настройками хостинга?

Ответить
Галина 07.08.2012 / 16:08

Игорь, подскажите, как узнать, какая функция используется для вывода комментариев. Ясно, что надо смотреть в comments.php, а что смотреть?

Ответить
Гордеев Игорь 07.08.2012 / 17:21

За вывод комментариев отвечает функция wp_list_comments . Именно ее значение и надо искать в comments.php.

Ответить
Галина 09.08.2012 / 12:58

Игорь, а может быть такое, что функция вывода комментария выглядит по-другому? Или я – уже такой непробываемый “чайник”, что не могу найти wp_list_comments? Вдоль и поперек излазила и comments.php, и functions.php.

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

Ответить
Гордеев Игорь 09.08.2012 / 13:08

Не совсем понял зачем вы ищете функцию для вывода комментариев, может вам нужна функция для вывода формы комментариев. Это разные вещи.

Ответить
Галина 10.08.2012 / 17:31

Игорь! Вы написали:”Добавляем в шаблон новое поле для ввода комментария. Существует два варианта как это можно сделать: 1. Если у Вы используете вывод формы комментария не через функцию comment_form()… 2. Второй вариант,если в шаблоне для вывода комментариев Вы используете функцию comment_form()”. Вот я и хочу узнать, какая функция используется у меня.

Ответить
Гордеев Игорь 01.09.2012 / 15:43

Галина, как бы вам так ответить что бы Вы поняли. В уроке все описано что надо искать. Сначала посмотрите файл comments.php, что в нем искать написано в 1-ом варианте. Если это вариант Вам не подошел далее следует посмотреть файл functions.php, что ищем в нем написано в 2-ом варианте.

Ответить
Anna 01.09.2012 / 18:15

Галина, может быть Вам мой опыт поможет. В первый момент я подумала так же, как и Вы, что понятия не имею какой у меня там вывод формы через функцию или нет. Поэтому попробовала сначала второй вариант и добавила в шаблон функцию, т.е. просто скопировала туда код. Эффект был не совсем нужный: на простые комментарии тоже «спаму нет!» выдавало. Тогда в файле comments.php я поискала такую строчку и не нашла.
Но посмотрев внимательней нашла вот такую:

Т.е. нужно найти все, что между открывающим и закрывающим тегом textarea, как я понимаю. Я заменила все это на

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

Т.е. у меня вот class= не было а cols=”45″ rows=”8″ aria-required=”true было. Короче говоря, я совсем не уверена была, что правильно делаю, но в итоге у меня, кажется всё заработало. За что еще раз Игорю сердечная благодарность.

Ответить
Anna 01.09.2012 / 18:18

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

Ответить
Гордеев Игорь 03.09.2012 / 15:48

что бы работал отображался код надо использовать кнопку Код

Ответить
Anna 01.09.2012 / 02:01

вообще-то рано обрадовалась, “спаму нет” и на мои простые коменты выдает. что-то не так делаю

Ответить
Anna 01.09.2012 / 02:50

Кажется получилось! Нашла все отличия Вашей строки и моей и заменила в соответствии с ними. По крайней мере мои комментарии на сайт проходят, а на проверочной странице пишет “спаму нет”. Поглядим как будет действовать на спамеров. Вот теперь действительно большое спасибо!

Ответить
Anna 01.09.2012 / 03:36

🙂 плагины все доверчиво отключила, жду чего будет 🙂

Ответить
Anna 03.09.2012 / 17:54

За пару дней убедилась, всё работает как нельзя лучше. Чудо чудесное! Аж не верится. Еще раз примите сердечную благодарность!

Ответить
Гордеев Игорь 03.09.2012 / 21:29

Рад, что смог Вам помочь.

Ответить
Елена 31.10.2012 / 01:18

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

Ответить
Максим 09.11.2012 / 22:52

Пробовал ставить, проверка работает, но и на все остальные нормальные комменты тоже пишет Спаму нет. В чем может быть проблема?

Ответить
Гордеев Игорь 10.11.2012 / 22:11

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

Ответить
Наталья 24.11.2012 / 19:37

Вот это супер темка. Возможность избавиться от спама в виде такого небольшого кода – здорово! У меня сделано по-другому и тоже без плагинов, но при обновлении WP надо все поправлять, а ваш код гораздо лучше получается. Главное все внимательно сделать, чтоб и хорошие комменты не попали под цензуру 😉

Ответить
Nurlan 12.12.2012 / 22:57

А как эта функция отличает спам это или нормальный коммент?

Ответить
Гордеев Игорь 13.12.2012 / 10:40

Если Вы почитаете статью там все написано.

Ответить
Юрий 14.12.2012 / 01:47

А у меня после ввода руками комментария выдает ошибку. Пишет :

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

Ответить
Гордеев Игорь 14.12.2012 / 15:21

Читайте внимательнее инструкцию, все должно работать.

Ответить
Александр 21.12.2012 / 00:22

У меня нет такой строчки <textarea… в comments.php

Ответить
Гордеев Игорь 24.12.2012 / 13:08

в статье описано 2 варианта вывода комментариев. попробуйте другой.

Ответить
Claus 21.12.2012 / 00:38

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

Ответить
Гордеев Игорь 21.12.2012 / 12:29

Да, Вы правы с обновлением все останется.

Ответить
Елена 04.03.2013 / 12:21

Игорь, а я только успела поставить первый код в functions.php и пропала моя админка. Зашла в этот файл через файлзиллу, чтобы код удалить, а его там и нет. Со вчерашнего вечера мой хостинг не может вернуть мне админку. Как вы думаете, почему это произошло?

Ответить
Елена 05.03.2013 / 22:40

Игорь, у меня всё получилось. Спасибо большое!

Ответить
Елена 06.03.2013 / 21:49

Нет, ерунда какая-то… Смайлы перестали работать и мои ответы на комментарии считает спамом. Это только у меня так или ещё кто столкнулся с такой проблемой? А идея – классная! Супер просто!

Ответить
Ольга 09.07.2013 / 22:56

У меня тоже смайлы не работают 😥

Ответить
Светлана 13.03.2013 / 00:48

Игорь, здравствуйте!
Помогите, пожалуйста, “чайнику”. По 1 пункту все получилось отлично – “спаму нет!” пишет. Но по второму пункту (использовала 2-ой вариант)у меня получается два окошка для комментариев. Один, как я понимаю, должен быть скрыт. Но как это сделать я не понимаю.

Ответить
Гордеев Игорь 13.03.2013 / 17:49

Светлана попробуйте тогда первый вариант. Если не получится, то вам надо для ненужного поля для ввода текста присвоить свойства css

style="display: none;" 
Ответить
Светлана 13.03.2013 / 23:23

Игорь, здравствуйте!
Ничего не получается. По первому варианту не могу найти что-то похожее на . Неужели я неисправимый “чайник” 😥 ?
А в каком файле надо присвоить свойства css?

Ответить
Гордеев Игорь 14.03.2013 / 23:52

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

Ответить
Светлана 15.03.2013 / 00:00

Спасибо, Игорь!
Думаю, что придется оставить плагин.
Сегодня опять и так, и этак, но ничего не получается.
Всего Вам хорошего. У Вас очень замечательный блог, я еще не раз сюда вернусь.

Ответить
Ольга 03.07.2013 / 12:03

Игорь, здравствуйте. Я купила тему Вордпресс у Ксаны и в описании к теме написано, что метод защиты от спама использован Ваш. Работает просто супер, спасибо. За неделю, что стоит у меня тема, ни одного спам комментария не проскочило, хотя раньше, хоть у меня и стоял плагин доходило до 150 спама за два дня.
Один вопрос: смайлики он воспринимать не хочет. Пишет «Спаму нет!». Можно ли это как то исправить?

Ответить
Гордеев Игорь 03.07.2013 / 14:50

Ольга, здравствуйте!

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

Ответить
Ольга 08.07.2013 / 22:02

Вот понять бы что((

Ответить
Оксана Азовская 07.12.2014 / 21:50

Большое вам человеческое спасибо!

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

Ответить

Оставить комментарий