Еще одна избегалка спама
Раз уж Dandr решил опубликовать мой способ, надо бы сделать канонический вариант инструкции.
Итак. Смысл — боты обычно не заполняют форму на сайте, а шлют запрос напрямую файлу wp-comments-post.php. Спрячем его.
1. Подготовим ему замену
это должен быть php-файл, запускающий wp-comments-post.php
<?php include('wp-comments-post.php'); ?>
или
ln -s wp-comments-post.php wp-comments-nospam.php
или
просто переименовываем wp-comments-post.php в php-comments-nospam.php
Примечание
в отличие от предыдущих, в этом способе придётся переименовывать также и после каждого обновления WordPress
2. Защитим старый файл
вносим в .htaccess такой код:
<Files wp-comments-post.php>
order allow,deny
deny from all
</Files>
Примечание
если у вас отключен доступ к файлу .htaccess, поможет только переименование
Примечание
если вы переименовываете файл, пункт становится необязательным (но всё равно желательным — вдруг забудете при очередном обновлении)
3. Направим комментарии в новый обработчик
Надо немного подкорректировать тему, а именно файл (обычно) comments.php
Находим форму добавления комментария. Обычно это кусок кода вида
<form action="wp-comments-post.php" method="post"...
заменим имя файла в поле action:
<form action="wp-comments-nospam.php" method="post"...
Примечание
есть способ для параноиков — подменять имя файла в динамике джаваскриптом. 100% защиты от ботов и юзеров без джаваскрипта.
4. OpenID
Если вы используете плагин WP-OpenID, ему нужно персонально указать файл обработчика. Сначала надо было править код плагина (из-за этого я отключил у себя когда-то этот способ, точнее когда wp-openid бешено обновлялся каждые 2 дня), но теперь всё намного проще:
в wp-config.php добавляем
<?php
define('OPENID_COMMENTS_POST_PAGE', 'wp-comments-nospam.php');
Наличие этой опции доказывает, что не я первый додумался :-D
Всё! Имеем профит, не имеем спама, хотя кое-какие боты похоже начали догадываться, тем не менее уменьшение спама в разы гарантированно.