안녕하세요. 린치핀소프트 한광희입니다.

워드프레스 테마나 플러그인을 개발하다보면 현재 로그인한 유저의 역할과 권한에 따라 웹 페이지 접근을 불허하거나 특수한 기능을 추가해야 할때가 있습니다.

이때 워드프레스에서 제공하는 함수로, 현재 로그인한 이용자의 ID, 역할, 권한 등을 식별하고 더 나아가 특정한 역할(Role)이 어떠한 권한을 가지고 있는지 확인하는 함수 세가지를 소개합니다.

 

1.current_user_can(‘권한’)

이 함수는 현재 로그인한 유저가 어떠한 “역할(Role)”인지로 후속 처리를 분기시키는 것이 아닌, 현재 로그인한 유저가 특정 기능/권한이 허용되는 역할인가? 를 기준으로 후속 처리를 분기시키는데 유용한 함수입니다.

비유하자면 “A”라는 사람이 자신의 집에 출입할때 “A 본인 임을  확인하는 절차”로 생체지문이나 홍채로 본인을 인식하여 출입하는 방법과 다른 방법으로 현관문의 열쇠로 잠금장치를 해제하고 집에 출입 할 수 있다고 하겠습니다.

A라는 사람인가? 를 확인하고 집의 출입을 허가 하는 것이 “현재 유저가 A역할인가?”를 확인하는 것과 유사하고, 반대로 열쇠를 소지한 사람이 집으로 출입을 할 수 있는 방법이 “현재 로그인한 유저에게 ‘권한’이 있는가?’를 체크하는것과 유사하다고 생각하면 쉽습니다.

보통 역할(Role)을 정의하여 워드프레스 시스템에 추가 할때 권한(Capability)를 명시하여 추가합니다. 결국 “역할”을 통해 후속 처리를 분기하여 처리하는 것도  “권한”에 따라 처리하는 것과 마찬가지이므로, 조금 더 명확히 하여 “역할(Role)”보다는 “권한”으로 현재 유저를 식별하여 진행하는 경우를 권장합니다

2.get_current_user_id()

이 함수는 현재 로그인한 유저의 ID값을 확인 할 수 있습니다. 여기서 주의 할 점은 ID란 데이터베이스의 wp_users.ID를 말하는 것이며 이 ID를 통해 로그인한 유저의 회원정보나 포스트 발행정보를 참조 할 수 있습니다.

3.get_role(‘역할’)

워드프레스  시스템에 “add_role()”같은 함수로 새로 등록한 역할(Role)이나 시스템의 기본 역할(관리자,기여자,편집자,구독자,글쓴이 등)의 권한(Capability)등을 확인하고자 할때 사용하는 함수입니다. 워드프레스 시스템에서는 add_role()로 추가한 새로운 역할과 권한에 대한 정보는 워드프레스 데이터베이스의 wp_options 테이블의 레코드로 저장되어 관리됩니다.

이럴 경우 여러 테마와 플러그인에서 등록한 다양한 역할과 그 권한을 확실히 파악하기 위해서 사용해 볼 수 있는 함수입니다.

screenshot-www.linchpinsoft.com 2016-01-06 20-50-21

오늘 소개해드린 세 가지 함수의 사용예 입니다. current_user_can(‘activate_plugins’) 코드는  현재 로그인한 유저가 ‘activate_plugins’ 권한이 허가된 유저인가?를 체크하고 있습니다. ‘activate_plugins’ 권한은 워드프레스 기본에서 “관리자”에게 허용된 권한입니다.

get_role(‘subscriber’) 함수는 구독자(subscriber)에게 허가된 모든 권한들을 확인하고 있습니다.

 

screenshot-www.linchpinsoft.com 2016-01-06 20-49-26

위 스크린샷은 앞서 보여드린 함수를 실행했을때의 결과입니다. 마지막 함수 get_role(‘subscriber’)의 경우 워드프레스 시스템에서 낮은 권한만 허용된 “구독자”의 권한을 보여주고 있습니다.

오늘 소개한 세가지 함수를 통해서 플러그인과 테마를 개발할때 현재 로그인한 유저의 권한과 역할을 확인하고 그에 따라 분기하여 처리하는 구성을 쉽게 해볼 수 있습니다.