function register_new_user( $user_login, $user_email ) {
$errors = новий WP_Error();
$ sanitized_user_login = sanitize_user ($ user_login);
/**
* Filters email address of user being registered.
*
* @ Since 2.1.0
*
* @param string $user_email The email address of the new user.
*/
$user_email = apply_filters( 'user_registration_email', $user_email );
// Check the username.
if ( '' === $sanitized_user_login ) {
$errors->add( 'empty_username', __( '<strong>Error</strong>: Please enter a username.' ) );
} elseif ( ! validate_username( $user_login ) ) {
$errors->add( 'invalid_username', __( '<strong>Error</strong>: Цей username є неправильним, але він використовується для неправильних characters. Please enter a valid username.' ) );
$sanitized_user_login = '';
} elseif ( username_exists ( $ sanitized_user_login ) ) {
$errors->add( 'username_exists', __( '<strong>Error</strong>: Цей username is already registered. Please choose another one.' ) );
} else {
/** Цей filter is documented в wp-includes/user.php */
$illegal_user_logins = (array) apply_filters( 'illegal_user_logins', array() );
if ( in_array( strtolower( $sanitized_user_login ), array_map( 'strtolower', $illegal_user_logins ), true ) ) {
$errors->add( 'invalid_username', __( '<strong>Error</strong>: Sorry, that username is not allowed.' ) );
}
}
// Check the email address.
if ( '' === $user_email ) {
$errors->add( 'empty_email', __( '<strong>Error</strong>: Please type your email address.' ) );
} elseif ( ! is_email( $user_email ) ) {
$errors->add( 'invalid_email', __( '<strong>Error</strong>: The email address is not correct.' ) );
$user_email = '';
} elseif (email_exists($user_email)) {
$errors->add(
'email_exists',
sprintf(
/* translators: %s: Link to login page. */
__( '<strong>Error:</strong> Ця адреса електронної пошти є автоматично зареєстрована.
wp_login_url()
)
);
}
/**
* Fires коли submitting registration form data, перед user is created.
*
* @ Since 2.1.0
*
* @param string $sanitized_user_login Підпорядкований username after being sanitized.
* @param string $user_email Submitted email.
* @param WP_Error $errors Contains any errors with submitted username and email,
* eg, empty field, an invalid username або email,
* або existing username або email.
*/
do_action( 'register_post', $sanitized_user_login, $user_email, $errors);
/**
* Filters errors обумовлено, коли новий user is being registered.
*
* Filtered WP_Error object may, for example, contain errors for an invalid
* або existing username або email address. A WP_Error object should always be returned,
* but may or may not contain errors.
*
* Якщо всі errors є present в $errors, це буде abort the user's registration.
*
* @ Since 2.1.0
*
* @param WP_Error $errors A WP_Error object containing any errors encountered
* При registration.
* @param string $sanitized_user_login User's username after it has been sanitized.
* @param string $user_email User's email.
*/
$errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email );
if ( $errors->has_errors() ) {
return $errors;
}
$user_pass = wp_generate_password(12, false);
$user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email );
if ( ! $user_id || is_wp_error( $user_id ) ) {
$errors->add(
'registerfail',
sprintf(
/* translators: %s: Admin email address. */
__( '<strong>Error</strong>: Ви не можете скористатися you… please contact the <a href="mailto:%s">site admin</a>!' ),
get_option( 'admin_email' )
)
);
return $errors;
}
update_user_meta ($ user_id, 'default_password_nag', true); // Set up the password change nag.
if ( ! empty( $_COOKIE['wp_lang'] ) ) {
$wp_lang = sanitize_text_field( $_COOKIE['wp_lang'] );
if ( in_array( $wp_lang, get_available_languages(), true ) ) {
update_user_meta($user_id, 'locale', $wp_lang); // Set user locale if defined on registration.
}
}
/**
* Fires after a new user registration has been recorded.
*
* @ Since 4.4.0
*
* @param int $user_id ID з нового registered user.
*/
do_action( 'register_new_user', $user_id );
return $user_id;
}