Доброго времени суток.
Появилась необходимость добавить простенькую капчу при регистрации. К сожалению, при включенном плагине wp-recall фильтр registration_errors не работает. Если плагин отключить все работает отлично. В чем проблема?
add_filter('registration_errors', 'ij_check_captcha', 10, 1);
function ij_check_captcha($errors) {
$errors->add('ij_captcha', __( 'Ошибка: Защита от роботов не пройдена'));
return($errors);
}
Скрины:
Против спам регистраций можете использовать функционал wp-recall
- 2 пункт (сам использую уже год - ниодин не прошел бот)
Или воспользоваться капчей Really Simple CAPTCHA -
- 3 пункт. Было проверено - она работает
Костыль с соглашением, который к программированию никакого отношения не имеет или ссылка на вообще продукт постороннего разработчика, опять же который не имеет никакого отношения к вопросу? Давайте упросим вопрос чтобы Вас слово "каптча" так не отвлекало от сути. Как используя плагин получить возможность _программно_ производить проверку введенных данных с возможностью отклонить регистрацию с выводом соответствующего сообщения через WP_ERROR? Я надеюсь увидеть не ссылку на костыли или джумлу, а кусочек кода, ссылку на документацию или признание того что такой возможности в плагине нет.
Я понял вопрос, отвечаю, что есть на данный момент:
В плагине есть хук pre_register_user_rcl. Для примера добавляем проверку заполненности повтора пароля в форме регистрации:
//Добавляем сообщение о неверном заполнении поле повтора пароля add_filter('rcl_notice_form','rcl_notice_chek_register_pass'); function rcl_notice_chek_register_pass($notices){ global $rcl_options; if(!isset($rcl_options['repeat_pass'])||!$rcl_options['repeat_pass']) return $notices; $notices['register']['error']['repeat-pass'] = __('Repeat password is not correct!','rcl'); return $notices; } //Проверяем заполненность поля повтора пароля add_action('pre_register_user_rcl','rcl_chek_repeat_pass'); function rcl_chek_repeat_pass($ref){ global $rcl_options; if(!isset($rcl_options['repeat_pass'])||!$rcl_options['repeat_pass']) return false; if($_POST['secondary-email-user']!=$_POST['pass-user']){ wp_redirect(rcl_format_url($ref).'action-rcl=register&error=repeat-pass');exit; } }