22. 고급 기능 구현, 사용자 역할 및 권한 관리 특정 기능 접근 제어하기

워드프레스는 기본적으로 다양한 사용자 역할을 제공하여 각 사용자가 접근할 수 있는 기능을 제어할 수 있게 합니다. 그러나 개발 중에 사용자 정의 역할과 권한이 필요할 때가 많습니다. 본 강좌에서는 고급 기능 구현을 위해 사용자 역할 및 권한을 관리하는 방법을 심층적으로 설명하고, 이를 통한 특정 기능 접근 제어에 대한 예제를 제공합니다.

1. 사용자 역할 및 권한 이해하기

워드프레스에서는 기본적으로 다음과 같은 사용자 역할을 제공합니다:

  • 관리자 (Administrator): 모든 기능 접근 가능
  • 편집자 (Editor): 게시물 관리 및 수정 가능
  • 작성자 (Author): 자신의 게시물 관리 가능
  • 댓글 작성자 (Contributor): 게시물 작성 가능, 그러나 게시물을 공개할 수는 없음
  • 구독자 (Subscriber): 자신의 프로필만 수정 가능

사용자 역할은 권한의 집합으로, 각 역할에 따라 사용자에게 특정 기능에 대한 접근 권한을 부여합니다.

2. 사용자 정의 역할 생성하기

경우에 따라 기존 역할만으로는 부족할 수 있습니다. 이런 경우, 사용자 정의 역할을 생성하여 특정 권한을 부여할 수 있습니다. 다음 코드를 통해 새로운 역할을 추가해보겠습니다.


function custom_add_user_role() {
    add_role(
        'custom_role', // 역할의 이름
        '고급 사용자', // 역할의 표시 이름
        array(
            'read' => true, // 권한 설정
            'edit_posts' => true,
            'delete_posts' => false,
        )
    );
}
add_action('init', 'custom_add_user_role');

위의 코드는 ‘고급 사용자’라는 이름의 사용자 정의 역할을 생성하고, 사용자에게 게시물 읽기 및 수정 권한을 부여하였지만 삭제 권한은 부여하지 않는 예제입니다.

3. 사용자 역할에 권한 추가하기

생성한 사용자 정의 역할에 추가 권한을 부여하고 싶다면, add_cap 메소드를 사용할 수 있습니다. 아래 코드를 참고하세요.


function custom_add_capabilities() {
    $role = get_role('custom_role');
    if($role) {
        $role->add_cap('publish_posts'); // 게시물 공개 권한 추가
    }
}
add_action('admin_init', 'custom_add_capabilities');

4. 특정 기능 접근 제어하기

이제 사용자 정의 역할과 권한을 설정했으므로, 특정 기능에 대한 접근 제어를 구현해보겠습니다. 예를 들어, ‘고급 사용자’ 역할을 가진 사용자만 특별 메뉴를 보이게 할 수 있습니다. 다음 코드를 사용해보세요.


function custom_menu_access() {
    if(!current_user_can('custom_role')) {
        remove_menu_page('tools.php'); // 도구 메뉴 숨기기
    }
}
add_action('admin_menu', 'custom_menu_access');

위의 예제는 ‘고급 사용자’ 역할을 가진 사용자가 아닌 경우 도구 메뉴를 숨기는 코드입니다.

5. 사용자 역할과 권한 관리 플러그인

워드프레스에서 사용자 역할과 권한을 보다 쉽게 관리하기 위해 다양한 플러그인이 제공됩니다. 여기에서는 User Role Editor 플러그인의 사용법을 간단히 소개합니다.

  1. 워드프레스 관리자 대시보드에서 ‘플러그인’ -> ‘새로 추가하기’로 이동합니다.
  2. ‘User Role Editor’를 검색하여 설치하고 활성화합니다.
  3. 이제 ‘사용자’ -> ‘사용자 역할 편집기’ 메뉴로 이동하여 각 역할의 권한을 GUI를 통해 쉽게 설정할 수 있습니다.

6. 사용자 정의 권한이 있는 테마 또는 플러그인 개발

이제 사용자 정의 역할 및 권한을 사용하는 방법을 배웠으니, 이들을 활용한 테마 또는 플러그인 개발을 고려할 수 있습니다. 예를 들어, 특정 게시글 유형에 대해 ‘고급 사용자’만 접근할 수 있도록 제한하는 기능을 추가할 수 있습니다.


function restrict_post_type_access() {
    if (is_admin() && !current_user_can('custom_role') && get_post_type() == 'your_custom_post_type') {
        wp_die(__('이 기능에 접근할 수 있는 권한이 없습니다.'));
    }
}
add_action('load-post.php', 'restrict_post_type_access');
add_action('load-post-new.php', 'restrict_post_type_access');

위 코드는 작성자와 편집자가 아닌 ‘고급 사용자’만 특정 게시물 유형에 접근하도록 설정합니다.

7. 결론

워드프레스에서 사용자 역할 및 권한 관리는 웹사이트의 보안과 관리 효율성을 크게 향상시킬 수 있는 중요한 요소입니다. 이 강좌에서 설명한 대로 사용자 정의 역할을 만들고, 특정 기능의 접근을 제어함으로써 더 안전하고 효율적인 사이트를 운영할 수 있습니다. 이러한 기능을 활용하여 비즈니스 요구사항에 맞게 사이트를 최적화해보세요.

8. 추가 자료 및 참고 링크