권한별로 메뉴 보이게 하는 방법에 대해 알아보자.
권한별이 아닌 역할별로 따로따로 메뉴들을 보게하고싶다면 사용자 역할별 메뉴 보이게 하는 방법을 참고하자.
사용자 권한별 메뉴
권한별 메뉴를 추가하려면 아래 예시를 참고하여 추가한다.
코드 추가
header.php, footer.php 등 메뉴를 넣고자 하는 위치에 이 코드를 참고하여 추가 한다.
<div class="menu-item"><?php wp_loginout(); ?></div> <?php $current_user = wp_get_current_user(); if( is_user_logged_in() ) { echo '<div class="menu-item"><a href="' . esc_url( home_url( "/" ) ) . 'author/' . $current_user->user_login . '">프로필</a></div>'; if( current_user_can( 'publish_posts' ) ) { echo '<div class="menu-item"><a href="' . admin_url( 'post-new.php' ) . '">글쓰기</a></div>'; } if( current_user_can( 'activate_plugins' ) ) { echo '<div class="menu-item"><a href="' . get_admin_url() . '">관리자</a></div>'; } } else { echo '<div class="menu-item"><a href="' . esc_url( home_url( "/" ) ) . 'wp-login.php?action=register">회원가입</a></div>'; } ?>
사용된 코드 설명
wp_loginout();
:
로그인 상태에선 로그아웃 링크, 로그아웃 상태에선 로그인 링크를 보여주는 함수.
wp_register();
:
로그인 상태에선 관리자 링크, 로그아웃 상태에선 회원가입을 보여주는 함수.
wp_get_current_user();
:
현재 로그인한 사용자의 정보를 가져오는 함수.
if( is_user_logged_in() )
:
로그인이 되어있어야 조건에 부합하는 코드.
if ( ! is_user_logged_in() )
:
위의 코드와 비슷하지만 !로 완전 반대의 의미를 갖는다. 로그인이 안되어있어야 조건에 부합하는 코드.
esc_url( home_url( “/” ) )
:
워드프레스 홈 URL 불러오는 코드.
$current_user->user_login
:
현재 로그인된 계정의 displayname을 불러오는 코드.
current_user_can()
:
사용자의 지정된 기능 확인하는 함수.
‘publish_posts’
:
Author 이상 역할 사용자 지정.
‘activate_plugins’
:
Administrator 역할 지정.
get_admin_url()
:
관리자 페이지 주소 가져오는 함수.
첨언
여기엔 if가 두 번 나온다.
elseif로 하면 첫번째 if 조건에 해당하지 않을 때의 조건을 지정해줄 수 있다. 그냥 else는 완전 반대.
따라서 if를 두 번 하면 위에 적어놓은 글쓴이 이상의 역할 가진 사용자에게 보여줄 메뉴가 관리자에게도 보인다.
권한에 대한 자세한 사항은 참고 표에 링크 걸어놓은 Wordpress.org - Roles and capabilities Article 페이지 접속하여 확인한다.
참고
Wordpress.org - Roles and capabilities Article
Wordpress.org - get_admin_url - reference
관련 포스트
사용자 역할별 메뉴 보이게 하는 방법
사용자 권한별 메뉴 보이게 하는 방법 - 현재글