Как защитить wordpress от спама в комментариях?

На моём сайте столько много комментариев, целая сотня за месяц. Казалось бы хорошо, но при прочтении 75% из них уйдут в спам. Поэтому возникает вопрос: «Как защитить wordpress от спама в комментариях, не прибегая к капчи и дополнительным плагинам?»

Вот такая картина была у меня на блоге до применения этого способа (более сотни подобных комментариев):

Как защитить wordpress от спама в комментариях?

Что делать, если не хочется просматривать сотни комментариев и отбирать из них человеческие?

Есть множество способов, позволяющих решить эту проблему:

  • Убрать блок комментариев WordPress и поставить другой (зависеть от других сервисов не хорошо)
  • Поставить капчу (Большая вероятность того, что пользователь ошибется или ему будет лень. Это снизит количество комментариев на блоге раз в 5 минимум)
  • Поставить, какой-нибудь Анти-Спам плагин (не все сообщения будут фильтроваться по правилу)
  • Добавить галочку «Я не бот» (некоторые люди могут её не заметить)
  • Поменять значения ID полей

Как поменять значения ID полей?

Данный способ заключается в том, что мы делаем стандартное поле комментариев ‘comment’ не видимым для человека и подсовываем вместо него другое поле.

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

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

Что нужно сделать?

Зайдите в папку с вашим сайтом. Далее перейдите в папки «wp-content» -> «themes» -> название вашей текущей темы.

1 шаг: Добавление нового поля и скрытие старого

Откройте файл «comments.php» Найдите место, где на экран выводится поле с текстом комментария. В большинстве случаях эта строка выглядит так:

	

В случае, если подобная строка была найдена, то замените её на:

	

Далее, откройте «style.css» и в конце его допишите

	.smo {display: none;}

Иначе (если подобной строки нет):

Откройте файл «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'] .= 
  		'

'; return $default; }

Затем, откройте файл «functions.php » и допишите в конце:

	.comment-form-comment {display: none;}

Результат: У нас теперь есть поле «AndHacker_comment» и стандартное «comment» — невидимое, в которое пользователь ничего ввести не сможет.

2 шаг: определяем спам

Откройте файл «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('Скоро надоедливых спамеров начнут наказывать на уровне закона! ©AndHacker');
  		$comment_content = trim($_POST['AndHacker_comment']);
  		$_POST['comment'] = $comment_content;
  		return $commentdata;
	}

Проверка работы

Всё, теперь проверяем — добавьте комментарий к любой статье. Работает?
А что, если это будет бот? Можете проверить — временно закомментируйте «/*» и «*/» всё, что мы дописали в «style.css».
Будет 2 поля с комментариями. Если написать что-либо в «comment», то комментарий добавляться не будет и отобразится следующая надпись:
«Скоро надоедливых спамеров начнут наказывать на уровне закона! ©AndHacker»

Как защитить wordpress от спама в комментариях?

Что можно улучшить:

  1. Придумать свои индивидуальный ID(Сочетание символов). Заменить им «AndHacker_comment». Это повысит безопасность.
  2. Заменить надпись, которая будет отображаться при отправке спама на более дружелюбную, например: «да пошел ты …(закрыто цензурой)»

P.S А можно даже вставить шикарный стих с посланием (цензура):

2 Комментарии “Как защитить wordpress от спама в комментариях?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *