Wordpress Блоги Вебмастер Lab SEO Работа и деньги Интернет Фриланс Life

Как защитить свой блог от спама без плагинов

Источник: prodengiblog.ru

Последнее время спамеры совсем распоясались. Стоит только отключить плагин антиспама, так сразу, в течение ближайших 10 минут вы получите десяток идиотских предложений типа "Выигрывайте в казино" или "Поделюсь рецептом как заработать состояние за три дня не вставая с дивана".

Защита от спама является первостатейной задачей каждого владельца сайта.

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

Поэтому, когда я нашла на сайте studio-gost.ru способ защиты от спама без плагинов, то сразу же протестировала его на этом блоге.

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

Как известно, спамеры умеют записывать комментарии не только через форму комментариев на сайте, но непосредственно в базу данных сайта через файл wp-comments-post.php поэтому, прежде, чем писать этот пост я зашла в PhpMyAdmin, открыла таблицу Comments в базе данных и просмотрела ее - спама нет.

Итак, как защитить свой сайт от спама в комментариях?

Нужно спрятать стандартное поле для ввода комментария "comment" и заменить его на новое поле "real-comment".

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

Вот так просто и изящно.

Давайте сделаем это.

Если комментарии выводятся с помощью comments_template()

Откройте файл comments.php, найдите в нем тег

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

и замените его следующим:

<textarea id="comment" style="display: none;" name="comment"></textarea>
<textarea id="real-comment" class="textarea" name="real-comment"></textarea>

Название поля real-comment в последней строке замените своим названием.

Теперь откройте файл 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;
}

Название real-comment в этом коде так же замените на свое, то же самое, что вы указали в файле comments.php.

Если комментарии выводятся с помощью функ­ции comment_form()

для до­бав­ле­ния но­во­го по­ля вставьте в файл 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'] .='
<p class="comment-form-real-comment">
<label for="real-comment">Комментарий</label>
<textarea id="real-comment" name="real-comment" rows="8" cols="45"></textarea>
</p>
';
return $default;
}

Вот и все, теперь можно отключить и плагин против спама и капчу - надобности в них больше нет.


29 июня 2012 года
Сколько можно заработать на своём сайте?

3 комментариев на “Как защитить свой блог от спама без плагинов”

  1. Павел

    То же самое делает плагин Antispam Bee

  2. Юрий

    подскажите мне пожалуйста где вообще найти файл comments.php?

  3. Иван Селедкин

    файл comments.php ищите в папке шаблона






© WordPresse.ru - Русские темы и шаблоны для WordPress 2012
Дизайн и программирование: Максим Зотов

Рейтинг@Mail.ru