Функция get current user не работает в WordPress

3 июн. 2012 г., 01:40:56
Просмотры: 15.8K
Голосов: 1

Я пытался использовать этот код для получения информации о текущем пользователе, но ничего не отображается. Моя версия WordPress - 3.3.1

<?php
    wp_get_current_user();
    /**
     * @example Безопасное использование: $current_user = wp_get_current_user();
     * if ( !($current_user instanceof WP_User) )
     *     return;
     */
    echo 'Имя пользователя: ' . $current_user->user_login . '<br />';
    echo 'Email пользователя: ' . $current_user->user_email . '<br />';
    echo 'Имя: ' . $current_user->user_firstname . '<br />';
    echo 'Фамилия: ' . $current_user->user_lastname . '<br />';
    echo 'Отображаемое имя: ' . $current_user->display_name . '<br />';
    echo 'ID пользователя: ' . $current_user->ID . '<br />';
?> 

Результат:

Имя пользователя:

Email пользователя:

Имя:

Фамилия:

Отображаемое имя:

ID пользователя:

0
Все ответы на вопрос 3
0

Вы пробовали использовать вариант "Безопасного использования" из закомментированного раздела?

Честно говоря, у меня нет опыта работы с wp_get_current_user(), так как я никогда не использую эту функцию, но в любом случае, это должно работать:

global $current_user;

echo 'Имя пользователя: ' . $current_user->user_login . '<br />';
echo 'Email пользователя: ' . $current_user->user_email . '<br />';
echo 'Имя: ' . $current_user->user_firstname . '<br />';
echo 'Фамилия: ' . $current_user->user_lastname . '<br />';
echo 'Отображаемое имя: ' . $current_user->display_name . '<br />';
echo 'ID пользователя: ' . $current_user->ID;

wp_get_current_user() должна делать то же самое, так как это просто обёртка для первых двух строк выше, тем не менее, приведённый код точно должен работать.

3 июн. 2012 г. 03:41:10
0

До WordPress 4.5 функция get_currentuserinfo() была допустимым вариантом, но теперь она устарела и рекомендуется использовать wp_get_current_user().

Вы можете сохранить результат wp_get_current_user() в переменную для удобного доступа в вашей функции или на странице:

$current_user = wp_get_current_user();

Пример:

if ( is_user_logged_in() ) {

    $current_user = wp_get_current_user();

    echo 'Имя пользователя: ' . $current_user->user_login . '<br />';
    echo 'Email пользователя: ' . $current_user->user_email . '<br />';
    echo 'Имя: ' . $current_user->user_firstname . '<br />';
    echo 'Фамилия: ' . $current_user->user_lastname . '<br />';
    echo 'Отображаемое имя: ' . $current_user->display_name . '<br />';
    echo 'ID пользователя: '. $current_user->ID . '<br />';
    echo 'Аватар пользователя: ' . get_avatar( $current_user->ID, 64 ) . '<br />';

} else {

    echo 'Пользователь не авторизован.';

}

Также важно убедиться, что весь этот код выполняется после хука init, чтобы избежать пустого вывода.

27 янв. 2016 г. 09:27:59
2

Вот как можно получить текущего пользователя:

global $current_user;
$current_user = wp_get_current_user();

После этого вы можете использовать $current_user->ID где угодно.

Пример:

if ( is_user_logged_in() ) {
    $current_user = wp_get_current_user();
    echo 'Имя пользователя: ' . $current_user->user_login . '--';
    echo 'Email пользователя: ' . $current_user->user_email . '--';
    echo 'Имя: ' . $current_user->user_firstname . '--';
    echo 'Фамилия: ' . $current_user->user_lastname . '--';
    echo 'Отображаемое имя: ' . $current_user->display_name . '--';
    echo 'ID пользователя: '. $current_user->ID . '--';
} else {
    echo 'Пользователь не авторизован.';
}
27 янв. 2016 г. 06:18:23
Комментарии

Зачем вам нужна/используется глобальная переменная?

Mark Kaplun Mark Kaplun
27 янв. 2016 г. 06:32:57

Марк, я только что обновил ответ, но отвечая на твой вопрос - глобальная переменная здесь не нужна, и это основная причина использовать wp_get_current_user() (нажми на ссылку, чтобы увидеть, как функция обращается к глобальной переменной, если тебе интересно, как это работает).

Bryan Willis Bryan Willis
27 янв. 2016 г. 07:52:49