register_new_user() WP 2.5.0

Реєструє нового користувача. Вказуються лише логін та email.

Перевіряє передані параметри, генерує пароль та викликає функцію wp_create_user() .

На хуку wp_insert_user() для створення користувачів .

Працює на основі:
wp_create_user()

Повертає

int|WP_Error. ID створеного користувача або об’єкт WP_Error у разі помилки.

Використання

register_new_user($user_login, $user_email);
$user_login
(рядок) (обов’язковий)
Логін користувача, надалі використовуватиметься для входу через форму авторизації.
$user_email
(рядок) (обов’язковий)
Email користувача. На нього, після завершення реєстрації, користувач отримає листа про реєстрацію з логіном та паролем для входу.

Приклади

0

#1 Спрощений приклад використання з wp-login.php

$user_login = isset( $_POST['user_login'] ) ? $_POST['user_login'] : '';
$user_email = isset( $_POST['user_email'] ) ? $_POST['user_email'] : '';

$user_id = register_new_user($user_login, $user_email);

if ( ! is_wp_error($user_id) ) {
	$redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered';

	wp_safe_redirect($ redirect_to);
}
0

#2 Створюємо користувача з логіном test та поштою **[email protected]

register_new_user( 'test', '[email protected]');

список змін

З версії 2.5.0Введено.

Код register_new_user() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *