wp_set_current_user()
Устанавливает/Изменяет текущего пользователя по 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()
Pluggable функция — эту функцию можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.
Замена функции (переопределение) — в must-use или обычном плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.
Хуки из функции
Возвращает
WP_User
. Объект WP_User — данные пользователя.
Использование
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 Пере-инициализация текущего пользователя
Внимание! Запуск этой функции повлияет на все, что связано с текущим пользователем (реальным пользователем).
Допустим, нам нужно сделать что-то для специального пользователя в процессе выполнения PHP кода, но код, который мы запускаем, зависит от переменной $current_user, и у нас нет возможности изменить этот код. Чтобы решить эту проблему, мы можем переключиться на этого специального пользователя, а затем вернуть исходного пользователя.
// сохраняем ID текущего реального пользователя $original_user_id = get_current_user_id(); // переключаемся на пользователя 15 wp_set_current_user( 15 ); // Запускаем наш код... // Восстанавливаем пользователя wp_set_current_user( $original_user_id );
#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 | Введена. |