//Чек бокс антиспам add_action('comment_form', 'flagok_antispam_filtra'); add_action('comment_post', 'proverka_na_flagka'); function flagok_antispam_filtra($id) { if (!is_user_logged_in()) : print '<div class="antispam"><input style="width:auto;margin:5px;" type="checkbox" name="bad_post" value="1" />Это не спам *</div>'; endif; } function proverka_na_flagka($id) { if (!is_user_logged_in()) : if (!$_POST['bad_post']) : $updated_status = 'trash'; wp_set_comment_status($id, $updated_status); wp_die('Вы не подтвердили, что Вы не Спамер! Вернитесь назад и пройдите антиспам контроль.'); /* Покажем простому спам-боту, что он спамер. */ endif; endif; }
В 4 строке задается условие, что чекбокс выводится для тех кто не авторизованный. Если же он не авторизован, то выводится в чекбокс. Это видно в строке 6. Если хотите можете поменять текст возле чекбокса. Далее идет проверка нажал ли чекбокс пользователь перед тем как нажал кнопку - Отправить.
Если пользователь не сделал этого, то ему выводится сообщение из строки 14. Если он не вернулся и не подтвердил, то сообщение отправляется в корзину.
2. Добавляем стили.
Добавим простенькие стили, чтобы текст отображался корректно. По желанию можете стилизовать и сам чекбокс.
.antispam{font-size:12px;color:#f30;font-weight:bold;}
У чекбокса есть name и это bad_post, так же он указан в 11 строке, если Вы вдруг захотите его сменить или какой-то бот приспособится к нему, просто меняйте на тот что Вам надо.
Как я и писал выше, данный способ не идеален, но тем не менее рабочий. Результат виден сразу, спам-боты отпадают, остаются только живые посетители.
Надеюсь этот способ Вам поможет и избавит от головной боли.
На этом все, спасибо за внимание. 🙂