wp_set_current_user() WP 2.0.3

Встановлює/змінює поточного користувача за ID або ім’ям. Функція не авторизує користувача, а змінює глобальну змінну $current_user і пов’язані з нею змінні.

Вкажіть $id = null , коли ID користувача невідоме, але відомо його ім’я (name).

Для деяких дій WordPress потрібна авторизація. За допомогою цієї функції можна надати такі дії неавторизованим користувачам або іншим ролям.

Встановлює глобальні змінні:

$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()

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Працює на основі:
setup_userdata()
Основа для:
wp_get_current_user()

Хуки з функції

Повертає

WP_User. Об’єкт WP_User – дані користувача.

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

wp_set_current_user ($ id, $ name);
$id
(число) (обов’язковий)
ID користувача. Можна вказати null, якщо ID користувача невідоме.
$name
(рядок)
Ім’я користувача username (login).


За замовчуванням: ”

Приклади

0

#1 Встановимо поточного користувача та авторизуємо його

Цей приклад встановить поточного користувача та авторизує його:

$user_id = 12345;
$user = get_user_by( 'id', $user_id );
if($user) {
	wp_set_current_user($user_id, $user->user_login);
	wp_set_auth_cookie( $user_id );
	do_action( 'wp_login', $user->user_login );
}
0

#2 Пере-ініціалізація поточного користувача

Увага! Запуск цієї функції вплине на все, що пов’язане із поточним користувачем (реальним користувачем).

Допустимо, нам потрібно зробити щось для спеціального користувача в процесі виконання PHP коду, але код, який ми запускаємо, залежить від змінної $current_user, і ми не маємо можливості змінити цей код. Щоб вирішити цю проблему, ми можемо перейти до цього спеціального користувача, а потім повернути вихідного користувача.

// Зберігаємо ID поточного реального користувача
$original_user_id = get_current_user_id();

// переключаємося на користувача 15
wp_set_current_user(15);

// Запускаємо наш код...

// Відновлюємо користувача
wp_set_current_user($original_user_id);
0

#3 Перевстановлення поточного користувача

Допустимо ми оновлюємо дані у профілі користувача і після оновлення даних, нам потрібно перевстановити вже встановлену глобальну змінну $current_user та всі інші глобальні змінні, пов’язані з поточним користувачем.

Тобто. нам потрібно, щоб черговий виклик wp_get_current_user() та подібні функції повертали актуальні дані користувача після оновлення.

Global $current_user;
$cuser_id = $current_user->ID; // запам'ятаємо ID
unset ($ current_user); // видалимо, щоб wp_set_current_user() перевстановила все заново
wp_set_current_user ($ cuser_id); // встановлюємо заново

нотатки

  • Global. WP_User. $current_user The current user object which holds the user data.

список змін

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

Код wp_set_current_user() WP 6.0.2

function wp_set_current_user( $id, $name = '' ) {
	Global $current_user;

	// If `$id` збирає поточного користувача, він не є до.
	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;
}

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

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