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

워드프레스의 강점 중에 하나는 CMS툴로서 홈페이지를 운영하거나 홈페이지 운영에 관여하는 이용자층을 역할과 기능에 맞추어 계층화 할수 있다는 점이 있습니다.

 

즉, 하나의 매거진 워드프레스를 예를 들면 “기자”, “편집자” , “구독자” 등의 세 역할을 설정하여 “기자”는 글을 작성할 수 있고 자신의 글을 읽을 수 있는 권한을 부여합니다.

“구독자”는 오직 글을 읽을 수 있는 열람 권한만을 부여하고 “편집자”에게는 글을 읽고 발행하고 삭제 할수 있는 권한을 부여합니다.

여기에  “시스템 관리자” 역할을 추가하여 워드프레스 사이트의 모든 운영권한과 플러그인/테마 관리 권한을 부여하여 사이트 운영 및 유지보수를 담당하게끔 할 수 있습니다.

screenshot-newtab 2015-12-22 17-44-38

 

이렇듯 워드프레스에서는 Role(역할) 이란 요소를 차용하여 플러그인 또는 테마에서 사이트 목적에 부합하는 역할을 추가할 수 있습니다.

보통 테마나 플러그인에서는 그 목적에 맞게끔 역할을 생성하여 이용자에게 이용할수 있도록 지원하고 있습니다.

예를 들어 전자상거래 플러그인(쇼핑몰 플러그인)인 Woocommerce인 경우 Customer 역할을 생성하여 구매하는 고객이 회원가입을 하면 customer 역할을부여합니다. 그래서 일반 회원이나 구매 고객, 사이트 관리자 등의 역할을 구분하여 운영할수 있도록 지원하고 있습니다.

이렇듯, 테마나 플러그인을 이용하여 지원하는 역할을 추가할수도 있지만 더 나아가 자신의 사이트에 특화되어 특정한 역할을 생성하거나 기능 제한/부여를 아주 쉽게 할수 있는 플러그인도 다수 등록되어 있습니다.

이 포스트에서는 훅(hook)과 함수를 이용하여 프로그래밍적으로 역할(Role)을 생성하는 방법과 플러그인을 이용하여 생성하는 방법을 소개 합니다

class CS_manager{
	

	function __construct(){
	
		add_action('init',array($this,'registerRole'));
	
	}

	function registerRole(){
		add_role(
			'cs_manager',
			'CS 담당자',
			array(
				'read'	=> true,
				'edit_posts'	=> true,
				'edit_others_posts'	=> true,
				'eidt_others_pages'	=> true,	
				'delete_posts'	=> true,
				'delete_published_posts' 	=> true,
				'delete_others_posts'	=> true,
				'publish_posts'	=> true,
				'upload_files'	=> true,
				'unfiltered_upload'	=> true,
				'edit_published_posts'	=> true,
				'update_core'	=> false,
				'update_plugins' => false,
				'update_themes' => false,
			)
		);

	}

}

위 프로그래밍 코드는 PHP코드로 “init” 액션 훅에 registerRole()메서드를 콜백함수로 실행시키게끔 지정합니다.

registerRole() 메서드에서는 워드프레스 내장함수인 add_role() 함수를 이용하여 “cs 담당자” 라는 역할을 생성해주고 있습니다.

그 아래 함수 매개변수 array()로 현재 생성하고 있는 역할의 권한등을 true/false로 설정해주고 있습니다.

역할을 추가하고 해당 역할에게 제한 또는 허용되는 기능을 부여하는 것은 위처럼 아주 간단합니다. 그러나 이 방법은 테마나 플러그인 개발자에게 유효한 방법으로 일반 이용자들은 더 쉽게 플러그인을 이용하여 역할을  추가하고 권한을 편집할수 있습니다.

screenshot-wordpress.org 2015-12-22 18-34-30

그 방법으로 Members(https://wordpress.org/plugins/members/) 플러그인을 설치하여 이용하면 손쉽게 역할을 편집할수 있습니다.
screenshot-52.68.215.28 2015-12-22 17-51-58

Members 플러그인을 설치 한 후 사용자 -> Add New Role 메뉴에 접속하면 위처럼 새로운 역할을 추가 할 수 있습니다. 각 역할별 권한도 좌측의 카테고리별로 구분하여 허용/비허용  체크박스로 체크하도록 구성했습니다. 기능에 대한 이해는 워드프레스 코덱스 사이트를 참고하면 정확히 알수 있지만 대략적으로 훑어만 보아도 어떠한 권한인지 쉽게 이해할수가 있습니다.

 

screenshot-52.68.215.28 2015-12-22 17-52-21

위의 화면은 Add New Role 메뉴를 통해 “CS담당자” 역할을 새로 생성한 후에 전체 역할 목록을 조회한 화면입니다.

 

screenshot-52.68.215.28 2015-12-22 17-53-37

위의 스크린샷처럼 Members 플러그인을 이용하여 역할을 정의하고 새로운 이용자나 기존 이용자에게 해당 역할을 배정할 수 있습니다.

 

쇼핑몰이나 매거진 또는 규모가 있는 웹 사이트를 운영하게 되면 각 직책이나 역할에 맞게끔 사이트를 운영해야 할 때가 있습니다. 이때 고려해야 할 요소는 다음과 같습니다.

1.사이트를 운영하기 위해 기획한 구성원의 역할과 워드프레스 사이트에서 지원하는 역할과 대응이 되는가?

2.워드프레스에서 지원하는 역할은 기능과 권한을 정확하게 제한하고 부여함으로써 해당 역할을 배정받은 사용자가 예상되는 행동만을 하도록 설정하였는가?

3.해당 역할을 수행할 사용자가 1명인지 또는 다수인지 확실히 정의 되었는가?

4. 동일한 역할을 수행하는 사용자들이 복수일경우 확실한 제약을 만들어 두었는가?

 

 

위의 요소등을 고려한 후에는 앞서 설명한 Members 같은 플러그인을 이용하여 역할을 생성하고 편집하여 각 구성원에게 해당 역할을 배정하여 워드프레스 사이트를 효율적으로 운영해 볼 수 있습니다.