Я работаю на сайте airsoft, используя woocommerce. Одна из моих потребностей клиента состоит в том, чтобы запретить пользователю регистрироваться, если его имя или почта находятся в черном списке (я еще не знаю, буду ли использовать файл csv, json или простой массив).
Поэтому я должен выполнить некоторые проверки перед вставкой пользователя в базу данных. Но мне не удалось найти хороший крюк.
Если вы просмотрите функцию wp_insert_user (), вы увидите, что существует множество фильтров и действий, которые вызывают в течение всего процесса. Первый – это фильтр, называемый pre_user_login на имени пользователя.
Строка 1304 из wp-includes / user.php:
$user_login = apply_filters('pre_user_login', $user_login);
Вы можете зацепиться за это и бросить свое собственное сообщение об ошибке.
Изменить: фильтр электронной почты находится всего в нескольких строках ниже этого.
Второй вариант редактирования: добавленный пример
add_filter( 'pre_user_login' , 'my_username_block' ); function my_username_block( $user_login ) { $black_listed = array( 0 => 'satan' , 1 => 'hitler' ); if( in_array( strtolower( $user_login ) , $black_listed ) ) { wp_die('That username is blacklisted'); } return $user_login; } add_filter( 'pre_user_email' , 'my_email_block' ); function my_email_block( $user_email ) { $black_listed_emails = array( 0 => 'iamaspammer@whatever.com' , 'imalsoaspammer@whatever.com' ); if( in_array( strtolower( $user_email ) , $black_listed_emails ) ) { wp_die('That email address is blacklisted'); } return $user_email; }
Возможно, используйте крючок регистрации пользователя: http://codex.wordpress.org/Plugin_API/Action_Reference/user_register
Это создает пользователя, а функция AFTERWARDS вызывает функцию, но затем вы можете немедленно проверить новую информацию пользователя в «черном списке» и либо удалить пользователя, либо добавить в свои данные пользовательское поле с черным списком.