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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1
	<textarea id="comment" class="textarea" name="comment"></textarea>

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

1
2
	<div class="smo"><textarea id="comment" class="textarea" name="comment"></textarea></div>
	<textarea id="AndHacker_comment" class="textarea" name="AndHacker_comment"></textarea>

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

1
	.smo {display: none;}

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

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

1
2
3
4
5
6
7
	add_filter('comment_form_defaults', 'change_comment_form_defaults'); 
	function change_comment_form_defaults($default) {
  		$commenter = wp_get_current_commenter();
  		$default['comment_notes_after'] .= 
  		'<p class="comment-form-real-comment"><label for="AndHacker_comment">Комментарий</label><textarea id="AndHacker_comment" cols="45" name="AndHacker_comment" rows="8"></textarea></p>'; 
  		return $default; 
  	}

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

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

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

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

Откройте файл «functions.php»
И добавьте в конце этот код:

1
2
3
4
5
6
7
8
9
	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

  • Привет, guest