Отличный метод — создание дополнительных полей в форме на странице с комментариями. Одна из реализаций доступна на сайте 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.

 
																								
Свежие комментарии