Wp_set_current_user() — Изменяет текущего пользователя по ID или имени. Функция не авторизует пользователя а меняет глобальную переменную $current_user и связанные с ней переменные. Функция WordPress.
Опубликовано: 01.09.2018
Изменяет текущего пользователя по ID или имени. Функция не авторизует пользователя а меняет глобальную переменную $current_user и связанные с ней переменные.
Step by step to create WordPress Custom Login Page Without Using a Plugin – Right Way in easy steps
Эта функция может быть переопределена плагинами.
Передайте $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()
Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init .
Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.
Хуки из функции:
Возвращает
массив данных пользователя - объект WP_User.
Использование
<?php wp_set_current_user( $id, $name ); ?> $id(число) (обязательный) ID пользователя. Можно указать null, если ID пользователя неизвестен. $name(строка) Имя пользователя username (login). По умолчанию: ''Примеры
#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 ); }#2 Переустановка текущего пользователя
Допустим мы обновляем данные в профиле пользователя и после обновления данных, нам нужно переустановить уже установленную глобальную переменную $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 ); // переустанавливаем