Отличный метод — создание дополнительных полей в форме на странице с комментариями. Одна из реализаций доступна на сайте wphook.ru , её суть в следующем:
стандартное поле textarea формы комментариев, в которое пользователь вводит текст, делается невидимым при отображении странице в реальном браузере через style=»display:none;«. Для ввода комментария пользователем создаётся дополнительный textarea real-comment, который пользователю виден и в который он вводит комментарий. Расчёт создателя делается на то, что робот не увидит style=»display:none;» и переменная $_POST[‘comment’] будет получена сервером. Обработчик формы это зафиксирует и не добавит данный комментарий в БД, поскольку такой коммент — это однозначный спам. Метод этот очень простой, неоднократно испытанный и действенный. Но всё это будет работать до тех пор, пока разработчики СПАМ-комплексов не обратят внимание на эту «заплатку» и не доработают свои программы.
Я позволил себе немного доработать изначальный вариант и перенёс style=»display:none;» в css. Код в functions.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//добавляем поле 'real-comment' start function wph_add_new_comment_field($args) { if (preg_match('/<textarea.*textarea>/', $args['comment_field'], $match)){ $textarea = $match[0]; $real_textarea = str_replace('comment', 'real-comment', $textarea, $count); if ($count) { $hidden_textarea = str_replace( '<textarea', '<textarea class="novision"', $textarea ); $hidden_textarea = str_replace( 'required="required"', '', $hidden_textarea ); $hidden_textarea = str_replace( 'aria-required="true"', '', $hidden_textarea ); $args['comment_field'] = str_replace($textarea, "$hidden_textarea$real_textarea", $args['comment_field']); } } return $args; } add_filter('comment_form_defaults', 'wph_add_new_comment_field', 30); //добавляем поле 'real-comment' end //проверка на спам start function wph_verify_spam() { if(false === strpos($_SERVER['REQUEST_URI'], 'wp-comments-post.php')) return; if(!empty($_POST['comment'])) wp_die('Спаму нет!'); $_POST['comment'] = $_POST['real-comment']; } add_filter('init', 'wph_verify_spam'); //проверка на спам end |
В style.css темы нужно добавить следующий код:
1 2 3 |
.novision{ display: none; } |
Сути это не меняет, но некоторая кастомизация скрипта несколько осложнит жизнь тем, кто попытается доработать свои спамерские комплексы и будет определять поля с display: none.
Свежие комментарии