Крючок перед вставкой пользователя в базу данных

Я работаю на сайте 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 вызывает функцию, но затем вы можете немедленно проверить новую информацию пользователя в «черном списке» и либо удалить пользователя, либо добавить в свои данные пользовательское поле с черным списком.