여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. 사용자 권한별 메뉴 보이게 하는 방법
사용자 권한별 메뉴 보이게 하는 방법
2년전 작성
2년전 수정

권한별로 메뉴 보이게 하는 방법에 대해 알아보자.

권한별이 아닌 역할별로 따로따로 메뉴들을 보게하고싶다면 사용자 역할별 메뉴 보이게 하는 방법을 참고하자.

사용자 권한별 메뉴

권한별 메뉴를 추가하려면 아래 예시를 참고하여 추가한다.

코드 추가

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 페이지 접속하여 확인한다.

참고
관련 포스트
사용자 권한별 메뉴 보이게 하는 방법 - 현재글

Mingg`s Diary
밍구
공부 목적 블로그