Функция get current user не работает в WordPress
Я пытался использовать этот код для получения информации о текущем пользователе, но ничего не отображается. Моя версия 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 пользователя:

Вы пробовали использовать вариант "Безопасного использования" из закомментированного раздела?
Честно говоря, у меня нет опыта работы с 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()
должна делать то же самое, так как это просто обёртка для первых двух строк выше, тем не менее, приведённый код точно должен работать.

До 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
, чтобы избежать пустого вывода.

Вот как можно получить текущего пользователя:
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 'Пользователь не авторизован.';
}

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