Не так давно обновил движок WordPress до версии 2.9.2, а затем, через некоторое время, заметил, что в комментарии стали сыпаться буквально тонны спама. Меня это удивило, так как раньше установленный плагин DCaptcha прекрасно с этой проблемой справлялся. Нетрудно было догадаться, что причиной возникновения проблемы стало обновление движка. Толи плагин теперь не цепляется, толи это просто какая-то уличная магия.
На самом деле, все оказалось гораздо проще. Если вы когда-нибудь смотрели на то, по какому принципу работают различного рода каптчи под WP, наверное обращали внимание, что почти все используют функцию wp_set_comment_status(), которая меняет статус комментария, если он не прошел проверку на спам. Если проверка кода безопасности не прошла, комментарий получал статус “delete” и растворялся в пространстве.
С выходом одной из версий линейки WordPress 2.9, в движке появилось такое понятие, как корзина. То есть, теперь комментарии и посты не удаляются сразу, а помещаются в корзину, откуда их можно восстановить, если потребуется. И теперь флага “delete” не существует как такового. То есть, когда плагин каптчи использовал функцию wp_set_comment_status() со статусом “delete”, с комментариями ничего не происходило и они успешно публиковались в топиках.
Решается проблема очень просто. Замените в вызове функции значение второго параметра – “delete” на “trash”, после чего весь спам будет сыпаться в корзину. Для плагина DCaptcha это делается в файле / wp-content/ plugins/ dimoning.ru-captcha.php.
Меняем:
1 | wp_set_comment_status($id, 'delete'); |
на:
1 | wp_set_comment_status($id, 'trash'); |
Да прибудет с вами сила в борьбе со спамом!
Автор: Мурашов Олег
Источник: http://inroot.ru/

есть некоторые капчи, которые просто выводят из себя, хочешь к интересной статье оставить коммент, так после 5 раза понимаешь, что ты “БОТ” с большой буквы…
Как мне кажется, DCaptcha достаточно удачное и простое для пользователя решение. Никаких цифр или букв. Просто чекбокс отметить…