WordPress - Проверьте, авторизован ли пользователь

Я новичок в WordPress. На моей домашней странице есть панель навигации, которую я хочу показывать только тем, кто вошел в систему как пользователь.

В моем header.php функция is_logged_in, похоже, не работает.

Я хочу поместить условие в мой файл header.php, чтобы проверить, вошел ли пользователь в систему (и затем отобразить навигацию).

Любые советы будут полезны.

Ответ 1

Используйте функцию is_user_logged_in:

if ( is_user_logged_in() ) {
   // your code for logged in user 
} else {
   // your code for logged out user 
}

Ответ 2

Попробуйте использовать следующий код, который отлично работает для меня

global $current_user;
get_currentuserinfo();

Затем используйте следующий код, чтобы проверить, вошел ли пользователь в систему.

if ($current_user->ID == '') { 
    //show nothing to user
}
else { 
    //write code to show menu here
}

Ответ 3

get_current_user_id() вернет текущий идентификатор пользователя (целое число) или вернет 0, если пользователь не вошел в систему.

if (get_current_user_id()) {
   // display navbar here
}

Подробнее здесь get_current_user_id().

Ответ 4

Эта проблема из-за ленивого запроса на обновление данных Chrome. В первый раз вы идете на домашнюю страницу. Запрос Chrome с пустыми данными. Затем вы переходите на страницу входа и авторизуетесь. Когда вы возвращаетесь на домашнюю страницу Chrome, лень обновлять запрос данных cookie, потому что этот домен совпадает с вашим первым доступом. Решение: Добавьте параметр для домашнего URL. Это помогает Chrome понять, что в этом запросе необходимо обновить cookie для вызова сервера.

добавить на странице панели инструментов

<?php 
$track = '?track='.uniqid();
?>
<a href="<?= get_home_url(). $track ?>"> <img src="/img/logo.svg"></a>

Ответ 5

Я так думаю. Когда гость запускает страницу, но Admin не регистрируется, мы ничего не показываем, например Чат.

add_action('init', 'chat_status');

function chat_status(){

    if( get_option('admin_logged') === 1) { echo "<style>.chat{display:block;}</style>";}
        else { echo "<style>.chat{display:none;}</style>";}

}



add_action('wp_login', function(){

    if( wp_get_current_user()->roles[0] == 'administrator' ) update_option('admin_logged', 1);
});


add_action('wp_logout', function(){
    if( wp_get_current_user()->roles[0] == 'administrator' ) update_option('admin_logged', 0);
});