WordPress как на ладони
wordpress jino

wp_get_current_user() WP 2.0.4

Получает данные о текущем авторизованном пользователе (объект WP_User).

Функцию можно переопределить. wp_get_current_user() находится в /wp-includes/pluggable.php, а этот файл подключается сразу после загрузки плагинов, но до события plugins_loaded. Сделано это для того, чтобы плагины могли переопределять эту функцию и так заменять её своей.

Поэтому нельзя вызывать эту и зависящие от нее функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded, init или позднее.

Используется в: get_current_user_id(), is_user_logged_in().
Работает на основе: _wp_get_current_user(), wp_set_current_user()
✈ 1 раз = 0.00001с = скорость света | 50000 раз = 0.03с = скорость света

Хуков нет.

Возвращает

Объект WP_User.

Если пользователь не авторизован, вернет пустой объект, т.е. проверять авторизован ли пользователь с помощью wp_get_current_user() нельзя:

if( wp_get_current_user() )
	echo 'эта строка будет выводиться всегда!';

// Нужно так:
if( wp_get_current_user()->exists() )
	echo 'Авторизован!';
// или так: if( is_user_logged_in() ){  }

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

wp_get_current_user();

Примеры

#1. Проверим вошел ли пользователь на сайт

Проверим авторизован (залогинен) ли пользователь:

$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
	// Не авторизован.
} else {
	// Авторизован.
}

#2. Получим данные текущего пользователя

Выведем на экран различные данные о текущем авторизованном пользователе, при помощи функции wp_get_current_user():

$current_user = wp_get_current_user();

echo 'Username: ' . $current_user->user_login . '<br />';
echo 'email: ' . $current_user->user_email . '<br />';
echo 'first name: ' . $current_user->user_firstname . '<br />';
echo 'last name: ' . $current_user->user_lastname . '<br />';
echo 'Отображаемое имя: ' . $current_user->display_name . '<br />';
echo 'ID: ' . $current_user->ID . '<br />';

Код wp get current user: wp-includes/pluggable.php WP 4.9

<?php
function wp_get_current_user() {
	return _wp_get_current_user();
}

Cвязанные функции

Из метки: _user

Еще из раздела: Остальное

wp_get_current_user 11 комментариев
  • Сергей @

    Вот эта функция вызывает дисплей нейм админа

    <?php 
    $user_info = get_userdata(1);
    echo '' . $user_info->display_name . "\n";
    ?>

    А какая функция вызывает дисплей нейм зареганого пользователя в его профиль? Просто у меня профиль на вронтедне и по этому пытаюсь тут немного видоизменять некоторые вещи. Заранее спасибо.

    Ответить3.3 года назад #
    • Kama4660

      Что-то я не понял, чем вам пример из этой функции не подходит?

      <?php
      	$current_user = wp_get_current_user();
      
      	echo 'Отображаемое имя: ' . $current_user->display_name . '<br />';
      ?>
      Ответить3.3 года назад #
  • xaseros

    Получает массив с информацией

    Во-первых не получает а возвращает, во вторых не массив а объект.

    В WP и так API расхлябанное, хоть вы не вносите лишний хаос.

    Ответить2.5 года назад #
    • Kama4660

      Вы чуть ниже пункт:

      Возвращает

      Объект WP_User.

      видели?

      Функция получает данные пользователя. А то что конкретно она возвращает это уже чисто технический вопрос...

      Правильно писать вообще так: Получает данные текущего пользователя и возвращает их в виде объекта WP_User. Ну я написал как написал, строгий шаблон для сео плох и вообще утомляет...

      "Получает массив с информацией" - это тоже самое что получает массив данных в виде объекта. Но, "Возвращает массив" - это уже другое... Если вы понимаете о чем я?

      В общем, поправил "массив информации" на "данные" чтобы не путать никого... Спасибо за коммент thank_you

      Ответить2.5 года назад #
      • Антон

        Какой еще хаос. Этот блог - настоящее сокровище. Автор, не слушай нытиков.

        1
  • campusboy1946 cайт: www.youtube.com/c/wpplus

    Странная тема. На одном сайте использую код:

    function is_user_role( $role, $user_id = null ) {
    	$user = ( $user_id ) ? get_userdata( $user_id ) : wp_get_current_user();
    	if( ! $user )       return false;
    	return in_array( $role, (array) $user->roles );
    }

    Всё работает. На другом выдает

    Fatal error: Call to undefined function wp_get_current_user() in C:\OpenServer\domains......

    В чём прикол, пока не понял. Использую в плагине. Пример брал отсюда.

    Ответить1.2 года назад #
    • Kama4660

      wp_get_current_user() находится в /wp-includes/pluggable.php, а значит она подключается после подключения всех плагинов... Т.е. если напрямую в коде плагина вызвать функцию is_user_role(), то получим такую вот ошибку... Её нужно вызывать во время хука plugins_loaded или позднее: init, wp, wp_loaded и т.д.

      П.С. Описал хук plugins_loaded, там в примере про это как раз smile

      1
      Ответить1.2 года назад #
      • campusboy1946 cайт: www.youtube.com/c/wpplus

        Это я понял, спасибо smile Меня лишь удивляет, что на другом сайте всё ж нормально, вот в чём прикол!

        Ответить1.2 года назад #
        • Kama4660

          Истина где-то рядом... Может на другом сайте есть плагин который эту функцию переопределяет и который подключается до твоего плагина? Или может все-таки на том другом сайте, она вызывается после plugins_loaded? Ну не может функция работать, пока она не определена, ты и сам это прекрасно знаешь smile

          1
          Ответить1.2 года назад #
          • campusboy1946 cайт: www.youtube.com/c/wpplus

            Согласен. Тот сайт, где это работает делал лично я. Там минимум плагинов, чисто must have и мой плагин личного кабинета. А на том, что мне дали - 40 плагинов стоит laugh Может какой из них малину портит. В общем, не важно. Спасибо за совет насчёт plugins_loaded. Не охота время тратить на копание, решил проблему так. По идее так и надо было мне изначально делать.

            1
            Ответить1.2 года назад #
  • Сергей cайт: www.iegres.kz

    Спасибо за подсказки!

    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий