Hello World

워드프레스 유저 권한과 역할을 체크하기. 본문

Wordpress

워드프레스 유저 권한과 역할을 체크하기.

EnterKey 2016. 1. 13. 20:16
반응형

워드프레스에서는 유저 권한(Capability)과 유저 역할(Role)을 구별해야 한다. 예를 들어 관리화면까지 가지 않고서도 포스트 페이지에서 간단히 포스트를 수정할 수 있는 기능을 만들었다고 하자. 그럼 그 기능을 사용할 수 있는 권한을 설정해야 한다. 만약 이걸 권한이 아니라 역할로 제한한다면 다소 불편하다. 예를 들어 타인의 글까지 수정할 수 있는 권한은 edit_others_posts이다. 그러나 이 기능을 Administrator에게만 허가한다면 edit_others_posts 권한을 지닌 Editor는 그 기능을 사용할 수 없게 된다.

그리고 Administrator 위에 Super Admin이 있음도 유의해두자. Super Admin은 멀티 사이트에서 모든 사이트와 네트워크 관리 권한까지 지닌 말 그대로 어드민 오브 어드민이다. 그러나 Administrator는 개별 사이트의 어드민을 말한다. 한 가지 권한을 예로 들어보면 manage_network 권한은 Super Admin 에게만 있고 Administrator에게는 없다.

그럼 이 권한을 체크하는 함수가 필요할 것이다. current_user_can이다.

if( !current_user_can( 'edit_others_posts' ) ) {
    wp_die( '안됩니다! 권한이 없습니다!' );
}

역할 체크도 가능하다. 그러나 다음과 같은 경우 editor는 가능하지만 editor보다 상위의 admin이 제한이 걸려버린다. 아마 이런 경우는 보통 원하지 않는다.

if( !current_user_can( 'editor' ) ) {
    wp_die( '당신은 편집자가 아닙니다.' );
}

권한을 기초로 어떤 기능을 제한하고 경고나 알림등을 표시해야하는 경우는 사이트 제작시 빈번하게 일어나는 일이다. 다음 링크를 꼭 확인바란다. 페이지 중간 쯤의 Capability vs. Role Table이다.

https://codex.wordpress.org/Roles_and_Capabilities

6개의 유저 역할과 각각의 등급에 따라 어떤 권한을 가지고 있는지를 확인할 수 있다. 약 70개 정도의 권한이 있으므로 한번 훑어보면 유익하다.

반응형
Comments