Довольно много спама приходит от ботов. Есть много плагинов, которые избавят вас от него. Многие довольно громоздки, да и разбираться в них особо не хотелось. Решил ради интереса сам написать.
Проблема, собственно, в том, что идентификаторы и имена элементов формы в WP стандартные. Да и файлы, обрабатывающие POST запросы известно как работают. Поэтому написать бота, который сам постит на сайте легко. Чтобы этого избежать достаточно проверку какую-нибудь делать. К примеру, можно проверять откуда запрос послан. В поле host запроса, должна быть страница вашего сайта. Умные боты, конечно же, могут это поле подменять.
Можно разместить капчу. Но я к ней не питаю тёплых чувств. Если вижу капчу на сайте (особенно типо той, что на ipb 3.0+), то вообще перестаю думать о комментировании :D
Решил обычный checkbox сделать. Для этого в файле шаблона формы wp-includes/comment-template.php добавляем чекбокс.
<?php if ( !is_user_logged_in() ) { ?> <p style="text-align:left;"> <style type="text/css"> #not_bot{ width:20px !important; } </style> <input type="checkbox" id="not_bot" name="not_bot" value="not_bot">Я не бот<br /> </p> <?php } ?>Теперь, в случае, если хочет комментить незарегистрированный юзер, то на экране будет checkbox.
Теперь надо обработку POST запроса подкорректировать. Для этого в файле wp-comments-post в корневой директории пишем:
$comment_not_bot = ( isset($_POST['not_bot']) ) ? trim($_POST['not_bot']) : null; if(!$user->ID && $comment_not_bot === null) wp_die( __('Ботам доступ запрещён.') );Теперь, в случае, если юзер не зареген и не нажал на чекбокс перед отправкой, он увидит сообщение об ошибке.
Ищите хостинг? хостинг украина — ваш выбор. Выгодные условия и оперативная тех. поддержка.