wp_set_current_user

Изменяет текущего пользователя по ID или имени. Функция не авторизует пользователя а меняет глобальную переменную $current_user и связанные с ней переменные.

Эта функция может быть переопределена плагинами.

Передайте $id значение null, если ID пользователя неизвестен, но известно его имя (name).

Некоторые функции в WordPress основаны на текущем пользователе не работают, если пользователь не авторизован. wp_set_current_user() дает возможность изменять и совершать какие либо действия для пользователей, которые не авторизованы.

Устанавливает глобальные переменные:
$user_ID    = (int) $user->ID;
$user_level = (int) $user->user_level;
$userdata   = $user;
$user_login = $user->user_login;
$user_email = $user->user_email;
$user_url   = $user->user_url;
$user_identity = $user->display_name;

См. setup_userdata()

Хуки из функции:
set_current_user
Возвращает

массив данных пользователя – объект WP_User.

Использование

<?php wp_set_current_user( $id, $name ); ?>
$id(число) (обязательный)
ID пользователя. Можно указать null, если ID пользователя неизвестен.
$name(строка)
Имя пользователя username (login).
По умолчанию: ”

Примеры

#1 Установим текущего пользователя и авторизуем его

Этот пример установит текущего пользователя и авторизует его:

global $current_user;
$cuser_id = $current_user->ID; // запомним ID
unset( $current_user ); // удалим, чтобы wp_set_current_user() переустановила все заново
wp_set_current_user( $cuser_id ); // переустанавливаем

Код из


wp-includes/pluggable.php

WP 4.7.2

<?php
function wp_set_current_user($id, $name = '') {
	global $current_user;

	// If `$id` matches the user who's already current, there's nothing to do.
	if ( isset( $current_user )
		&& ( $current_user instanceof WP_User )
		&& ( $id == $current_user->ID )
		&& ( null !== $id )
	) {
		return $current_user;
	}

	$current_user = new WP_User( $id, $name );

	setup_userdata( $current_user->ID );

	/**
	 * Fires after the current user is set.
	 *
	 * @since 2.0.1
	 */
	do_action( 'set_current_user' );

	return $current_user;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *