В предыдущей статье я писал о том, как защитить wordpress от спама в комментариях без использования капчи. Там рассказывалось о плагине Antispam Bee, который производит автоматическую подмену формы комментирования. Плагин этот работает превосходно, за 3 дня он отловил в моем блоге порядка 350 спамеров и ни один из них не проник в комментарии.
Сегодня расскажу о том, как ту же самую подмену формы комментирования можно сделать, не прибегая к плагинам. Но все по порядку. Давайте рассмотим, что такое подмена формы комментирования и как эта подмена происходит. В предыдущей статье я немного упоминал о подмене полей для защиты wordpress от спама в комментариях.Наша задача будет состоять в защите своего блога от спама в комментариях.
В ходе преобразования и модификаций мы просто скрываем стандартную форму комментария и вместо этого поля вклиниваем совершенно новое поле. Пользователи и посетители блога не замечают этой подмены и оставляют комментарии как обычно. Спам-боты, котороые постоянно пиарят свои ресурсы, заполняют стандартную форму комментирования, которая становится скрытой.
Для защиты wordpress от спама в комментариях без плагинов нам необходимо создать форму для ввода комментария. Для того, чтобы создать форму, есть два способа. Это связано с тем, что существует два вида функции comment_form().
Откройте файлик comments.php шаблона Вашей темя и посмотрите внимательно, что там прописано. Вы можете там найти там такую строчку:
<textarea id="comment" class="textarea" name="comment"></textarea>
Замените ее на следующую:
<div class="smo"> <textarea id="comment" class="textarea" name="comment"></textarea> </div> <textarea id="real-comment" class="textarea" name="real-comment"> </textarea>
Теперь нам остается скрыть стандартную форму комментирования. Для этого открываем файл style.css и прописываем следующее:
.smo {position: absolute; left: -1000px;}
Это мы рассмотрели один вариант подмены формы комментирования для защиты wordpress от спама.
Теперь давайте рассмотрим еще один вариант. Этот вариант поджойдет для тех, у кого используется новая функция 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" aria-required="true" rows="8" cols="45" name="real-comment"></textarea> </p>'; return $default; } //Конец добавления нового поля для комментария
теперь скрываем стандартную форму, внеся изменения в файл стилей:
.comment-form-comment {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; } //проверка на спам конец
Вот и все несложные манипуляции, благодаря которым мы с Вами Защищаем wordpress от спама в комментариях без плагинов.
На данный момент каптча решает все проблемы со спамом.
Не обязательно делать её длиной 25 символом и 10 цифр
достаточно 4-6 и боты отваливаются сразу.