Функция wp_get_current_user()
в WordPress используется для получения объекта текущего пользователя (WP_User
). Эта функция устанавливает текущего пользователя, если он еще не установлен, и возвращает его данные. Если ни один пользователь не вошел в систему, она вернет объект с ID 0, что является недопустимым значением и не будет иметь никаких разрешений.
wp_get_current_user(): WP_User
Возвращаемое значение
- WP_User: Возвращает объект
WP_User
, содержащий данные текущего пользователя.
Простой пример использования
Вот как можно использовать wp_get_current_user()
для получения информации о текущем авторизованном пользователе:
<?php
$current_user = wp_get_current_user();
if ( ! ( $current_user instanceof WP_User ) ) {
return;
}
printf( __( 'Username: %s', 'textdomain' ), esc_html( $current_user->user_login ) ) . '<br />';
printf( __( 'User email: %s', 'textdomain' ), esc_html( $current_user->user_email ) ) . '<br />';
printf( __( 'User first name: %s', 'textdomain' ), esc_html( $current_user->user_firstname ) ) . '<br />';
printf( __( 'User last name: %s', 'textdomain' ), esc_html( $current_user->user_lastname ) ) . '<br />';
printf( __( 'User display name: %s', 'textdomain' ), esc_html( $current_user->display_name ) ) . '<br />';
printf( __( 'User ID: %s', 'textdomain' ), esc_html( $current_user->ID ) );
?>
Если вам нужен только ID пользователя
Если вам нужно получить только ID текущего пользователя, вы можете использовать функцию get_current_user_id()
:
$current_user_id = get_current_user_id();
Использование в хуках
Функцию wp_get_current_user()
можно безопасно использовать после события plugins_loaded
. Если вы вызовете ее раньше, то получите фатальную ошибку.
Проверка роли пользователя
Чтобы определить, является ли текущий пользователь администратором, вы можете использовать следующий код:
$user = wp_get_current_user();
if ( in_array( 'administrator', $user->roles ) ) {
// Пользователь администратор, выполняем действия
} else {
// Пользователь не администратор, выполняем другие действия
echo do_shortcode( '[posts_table id="1" author="' . $user->ID . '"]' );
}
Проверка авторизации пользователя
Хотя для проверки, вошел ли пользователь в систему, лучше использовать функцию is_user_logged_in()
, вот пример того, как можно проверить, вошел ли пользователь, с помощью wp_get_current_user()
:
function wpdocs_check_logged_in() {
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
// Пользователь не авторизован
} else {
// Пользователь авторизован
}
}
add_action( 'init', 'wpdocs_check_logged_in' );
Важные замечания
- Если пользователь не авторизован,
wp_get_current_user()
вернет пустой объект. Поэтому нельзя проверять авторизован ли пользователь, как в примере ниже:
if( wp_get_current_user() ){
echo 'эта строка будет выводиться всегда!';
}
Правильные способы проверки:
if( wp_get_current_user()->exists() ){
echo 'Авторизован!';
}
// или
if( is_user_logged_in() ){
echo 'Авторизован!';
}
Зависимости
Чтобы вызвать wp_get_current_user()
до события plugins_loaded
, необходимо предварительно подключить зависимости:
wp_cookie_constants();
require ABSPATH . WPINC . '/pluggable.php';
$cuser = wp_get_current_user(); //> WP_User object
Заключение
Функция wp_get_current_user()
является мощным инструментом для работы с текущими пользователями в WordPress. Используйте ее, чтобы получить доступ к данным пользователя и управлять ими, а также для проверки прав доступа на сайте. Правильное использование этой функции поможет вам создавать более динамичные и отзывчивые приложения и плагины на платформе WordPress.