Функция wp_get_current_user(): примеры использования, проверка авторизации, получение ID.

# Функция wp_get_current_user()

Функция wp_get_current_user() позволяет получить информацию о текущем авторизованном пользователе в WordPress. Если пользователь еще не был задан, функция устанавливает его значение.

При первом вызове функции устанавливается текущий пользователь, и его данные сохраняются в глобальной переменной $current_user. Если пользователь не авторизован, функция вернет пустой объект пользователя.

## Как использовать

Эту функцию можно использовать только после срабатывания действия plugins_loaded. Если вы попытаетесь вызвать ее раньше, получите фатальную ошибку. Также функция вернет 0, если она будет вызвана в неавторизованном REST-запросе. Один из способов авторизовать REST-запрос — указать nonce-код.

### Пример использования с REST

```php
// Настройте зависимости, если необходимо вызвать эту функцию раньше.
wp_cookie_constants();
require ABSPATH . WPINC . '/pluggable.php';

// Получение текущего пользователя
$cuser = wp_get_current_user(); // Объект WP_User

Получение ID текущего пользователя

Когда вам нужно получить ID текущего пользователя, используйте функцию get_current_user_id():

$current_user_id = get_current_user_id();
$current_user = wp_get_current_user();

ID текущего пользователя определяется с помощью следующих функций:

  • wp_validate_auth_cookie()
  • wp_validate_logged_in_cookie()

Заметка о заменяемой функции

Функция является заменяемой (pluggable). Это значит, что вы можете создать функцию с таким же именем в своем плагине, чтобы заменить ее. Однако, она будет работать только после загрузки всех плагинов.

function wp_get_current_user() {
    return _wp_get_current_user();
}

Как проверить авторизацию пользователя

Чтобы проверить, авторизован ли пользователь, лучше использовать следующую конструкцию:

if ( wp_get_current_user()->exists() ) {
    echo 'Авторизован!';
} else {
    echo 'Не авторизован!';
}

Или можно использовать функцию is_user_logged_in():

if ( is_user_logged_in() ) {
    echo 'Авторизован!';
}

Примеры использования

Получение информации о текущем пользователе

$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 . '
';

Получение ID пользователя

Если вам нужно только узнать ID текущего пользователя:

$current_user_id = get_current_user_id();

Проверка авторизации

Использовать wp_get_current_user() для проверки авторизации не совсем корректно, поскольку функция может вернуть пустой объект. Вместо этого лучше использовать:

if ( is_user_logged_in() ) {
    echo 'Авторизован!';
} else {
    echo 'Не авторизован!';
}

Примечания

  • Функция _wp_get_current_user() используется в wp_get_current_user().
  • Глобальная переменная $current_user проверяет, установлен ли текущий пользователь.

Изменения

Функция была введена в версии 2.0.3.

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

  • get_current_user_id()
  • is_user_logged_in()
  • wp_set_current_user()

Здесь представлена улучшенная версия статьи с объяснениями на понятном языке и примерами. Структура сохранена и чётко организована, чтобы пользователи могли легко понять информацию о функции wp_get_current_user().

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *