programing

WordPress - 사용자가 로그인하고 있는지 확인합니다.

powerit 2023. 4. 3. 21:49
반응형

WordPress - 사용자가 로그인하고 있는지 확인합니다.

나는 워드프레스를 꽤 처음 본다.제 홈페이지에는 사용자로 로그인한 사람에게만 보여주고 싶은 네비게이션 바가 있습니다.

인마이header.php함수is_logged_in효과가 없는 것 같습니다.

내 조건에 조건을 붙이고 싶다.header.php사용자가 로그인했는지 확인하는 파일(다음 네비게이션 표시)

어떤 조언이라도 도움이 될 거예요.

를 사용합니다.is_user_logged_in기능:

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

예:사용자의 로그인 여부에 따라 다른 출력을 표시합니다.

<?php

if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    echo 'Welcome, visitor!';
}

?>

나에게 잘 작동한 코드를 따라해보십시오.

global $current_user;
get_currentuserinfo();

그런 다음 다음 다음 코드를 사용하여 사용자가 로그인했는지 확인합니다.

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

get_current_user_id()는 현재 사용자 ID(정수)를 반환하거나 사용자가 로그인하지 않은 경우 0을 반환합니다.

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

자세한 내용은 get_current_user_id()를 참조하십시오.

이 문제는 Chrome의 느린 업데이트 데이터 요청으로 인한 것입니다.처음에 홈페이지에 접속합니다.데이터가 비어 있는 크롬 요청입니다.그런 다음 로그인 페이지로 이동하여 로그인합니다.홈 페이지로 돌아갈 때 이 도메인은 처음 액세스할 때와 같기 때문에 Chrome에서 쿠키 데이터 요청을 업데이트하지 않습니다.솔루션:홈 URL에 대한 매개 변수를 추가합니다.이를 통해 Chrome은 이 요청을 서버에 호출하기 위해 쿠키를 업데이트해야 한다는 것을 알 수 있습니다.

대시보드 페이지에서 추가

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

그런 것 같아요.게스트가 페이지를 시작하고 있지만 관리자가 로그인하지 않은 경우 채팅과 같은 항목이 표시되지 않습니다.

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);
});

언급URL : https://stackoverflow.com/questions/19946972/wordpress-check-if-user-is-logged-in

반응형