베스트셀링 인기 워드프레스 테마 Top 30 자세한 정보

워드프레스에서 특정 사용자 유형의 사용자 권한 지정하기

Last Updated: 2020년 10월 14일 | 4개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

워드프레스에서 특정 사용자 유형이 사용자 권한을 지정하고 싶은 경우가 있을 수 있습니다. 사용자 역할에 따라 특정 권한을 제한하거나 허용하고 싶은 경우 플러그인을 사용하거나 직접 코드로 권한을 제한할 수 있습니다.

이 글은 2015년도에 최초 작성되었지만 글의 내용을 보강하여 새로 발행되었습니다.

플러그인 사용: User Role Editor

워드프레스 User Role Editor 플러그인

워드프레스에서 새로운 사용자 레벨을 추가하거나 기존 사용자 유형(역할)의 권한을 수정하려면 User Role Editor와 같은 플러그인을 사용할 수 있습니다. User Role Editor는 2020년 8월 현재 60만 개 이상의 사이트에 설치되어 사용되고 있습니다.

워드프레스 관리자 페이지 > 플러그인 > 새로 추가에서 'user role editor'를 검색하여 User Role Editor를 설치한 후에 알림판의 사용자 > User Role Editor로 이동하는 원하는 사용자 유형의 권한(Permission)을 변경할 수 있습니다.

워드프레스 사용자 역할 권한 변경하기

위의 그림에서는 subscriber (작성자) 사용자 유형의 권한을 변경할 수 있는 화면입니다. 이와 같이 플러그인을 사용하면 수월하게 사용자 유형의 권한을 수정할 수 있습니다.

그리고 오른쪽에서 "Add Role(역할 추가)"을 클릭하여 새로운 역할(회원 등급)을 추가할 수 있습니다.

워드프레스 사용자 역할 추가

User Role Editor 유료 버전

User Role Editor에 대한 자세한 내용은 플러그인 페이지를 참고해볼 수 있습니다. 플러그인 페이지를 살펴보니 유료 버전에서는 추가적인 모듈을 제공한다고 하네요. PRO 버전에서 제공하는 추가 모듈:

  • Block selected admin menu items for role (역할에 대하여 선택한 관리자 메뉴 항목 차단)
  • Hide selected front-end menu items for no logged-in visitors, logged-in users, roles (비로그인 방문자, 로그인 사용자, 역할에 대하여 선택한 프런트엔드 메뉴 항목 숨기기)
  • Block selected widgets under “Appearance” menu for role (역할에 대하여 "테마 디자인" 아래의 선택한 위젯 차단)
  • Show widgets at front-end for selected roles (선택한 역할에 대하여 프런트엔드에 위젯 표시)
  • Block selected meta boxes (dashboard, posts, pages, custom post types) for role (역할에 대하여 선택 메타박스 (대스보드, 포스트, 페이지, 사용자 정의 글 유형) 차단)(
  • “Export/Import” module. You can export user role to the local file and import it to any WordPress site or other sites of the multi-site WordPress network ("내보내기/가져오기" 모듈. 사용자 역할을 로컬 파일로 내보내기하여 워드프레스 사이트나 멀티사이트 워드프레스 네트워크 내의 사이트에서 가져오기 할 수 있음)
  • Roles and Users permissions management via Network Admin for multisite configuration. One click Synchronization to the whole network (멀티사이트 구성에 대하여 네트워크 관리자 페이지를 통해 역할 및 사용자 권한 관리. 원클릭으로 전체 네트워크에 동기화)
  • “Other roles access” module allows to define which other roles user with current role may see at WordPress: dropdown menus, e.g assign role to user editing user profile, etc. ("다른 역할 액세스" 모듈 - 현재 역할을 가진 다른 역할의 사용자가 볼 수 있는 항목 정의)
  • Manage user access to editing posts/pages/custom post type using posts/pages, authors, taxonomies ID list (포스트/페이지, 작성자, 분류 ID 리스트를 편집할 수 있는 사용자 액세스 관리)
  • Per plugin users access management for plugins activate/deactivate operations (플러그인에 따라, 플러그인 활성화/비활성화 작업을 위한 사용자 액세스 관리)
  • Per form users access management for Gravity Forms plugin (폼에 따라, Gravity Forms 플러그인에 대하여 사용자 액세스 관리)
  • Shortcode to show enclosed content to the users with selected roles only (둘러싼 콘텐츠를 선택한 역할을 가진 사용자에게만 표시하는 숏코드)
  • Posts and pages view restrictions for selected roles (선택한 역할에 대하여 글 및 페이지 보기 제한)
  • Admin back-end pages permissions viewer (어드민 백엔드 페이지 퍼미션 뷰어)

add_action 함수 사용를 사용하여 사용자 권한 지정하기

플러그인을 사용하지 않고 직접 코드를 사용하려는 경우 다음과 같은 형식으로 테마의 함수 파일(functions.php)에 추가할 수 있습니다. 차일드 테마(하위 테마)를 만든 후에 차일드 테마 내의 함수 파일에 아래 코드를 넣으시기 바랍니다.

if ( ! function_exists( 'writer_set_roles' ) ):
function writer_set_roles()
{
global $wp_roles;
// 글/페이지 편집
$wp_roles->add_cap('author','edit_others_pages'); // author가 다른 페이지를 수정할 수 있도록 허용
$wp_roles->add_cap('author','edit_published_pages'); // author가 발행된 페이지를 수정할 수 있도록 허용
$wp_roles->add_cap('author','edit_private_pages');  // author가 private 페이지를 수정할 수 있도록 허용
$wp_roles->add_cap('author','publish_pages');  // author가 페이지를 발행할 수 있도록 허용
$wp_roles->add_cap('author','delete_pages');  // author가 페이지를 삭제할 수 있도록 허용
$wp_roles->add_cap('author','delete_others_pages');  // author가 다른 페이지를 삭제할 수 있도록 허용
$wp_roles->add_cap('author','delete_others_posts');  // author가 다른 글을 삭제할 수 있도록 허용
$wp_roles->add_cap('author','delete_published_pages');  // author가 발행된 페이지를 삭제할 수 있도록 허용
$wp_roles->add_cap('author','manage_categories');  // author가 카테고리를 관리할 수 있도록 허용

// 외모 (테마 디자인)
$wp_roles->add_cap('author','edit_themes');  // author가 테마를 편집할 수 있도록 허용
$wp_roles->add_cap('author','edit_theme_options');  // author가 테마 옵션을 편집할 수 있도록 허용
$wp_roles->add_cap('author','manage_widgets');  // author가 위젯을 관리할 수 있도록 허용
$wp_roles->add_cap('author','edit_widgets');  // author가 위젯을 수정할 수 있도록 허용

// 플러그인 권한 예제
$wp_roles->add_cap('author','NextGEN Gallery overview');
$wp_roles->add_cap('author','NextGEN Use TinyMCE');
$wp_roles->add_cap('author','NextGEN Upload images');
$wp_roles->add_cap('author','NextGEN Manage gallery');
$wp_roles->add_cap('author','NextGEN Manage others gallery');
}
endif;
add_action( 'after_setup_theme', 'writer_set_roles' );
// Source: http://wordpress.stackexchange.com

위의 add_action 함수에서는 author(작성자)에 새로운 권한을 부여하는 예를 보여줍니다. author 대신에 contributor(기여자), editor(편집자), 사용자 지정 사용자 유형 등에 응용할 수 있습니다.

워드프레스의 역할과 권한에 대한 자세한 내용은 WordPress Codex 페이지를 참고하시기 바랍니다. 이 Codex 페이지에 나오는 권한은 사용자 권한별로 제한할 때에도 사용할 수 있습니다. 이 글에서 특정 글/페이지/카테고리에 액세스 제한하는 방법을 설명하고 있습니다. 이 글에서 회원 역할별로 제한하는 방법을 보여주는 데, 이 보다는 권한별로 사용하는 것이 더 효율적일 수 있습니다. 예를 들어, 관리자일 경우 if( current_user_can( 'administrator' ) ) 코드 대신

if ( current_user_can( 'activate_plugins' ))

형태를 사용할 수 있습니다.  관리자 아닐 경우에는 다음과 같은 코드를 사용할 수 있습니다.

if ( !current_user_can( 'activate_plugins' ))

참고:



4 개 댓글

Leave a Comment

  1. 안녕하세요.
    user role editor 를 사용해서 회원별 권한을 수정해 보려고 했습니다.
    그런데 관리자 화면에서 woocommerce 부분이 보이질 않습니다.
    그래서 설치된 플러그인으로 들어가서 확인했더니
    접근 권한이 없다고 나옵니다.
    관리자 권한은 건드리지 않았는데 왜 그런지 잘 모르겠습니다.

    또한 플러그인을 삭제 했었는데 여전히 보이질 않습니다.

    답변하기
    • 안녕하세요?

      유선상으로 말씀드렸듯이 User Role Editor는 매우 유명한 플러그인이고 많은 사용자가 사용하고 있습니다. (현재 40만 개 이상 사이트에서 이 플러그인이 사용 중이네요.)

      말씀하신 증상이 User Role Editor의 버그인 것으로 생각되시면 User Role Editor에 문의해보실 수 있습니다. 특히 Pro 버전( https://www.role-editor.com/ )도 있으므로 Pro 버전을 구매하시면 지원까지 받을 수 있을 것입니다.

      답변하기
  2. WPFront User Role Editor   <---이거 프로 버전 사용하면 제가 원하는 라이브러리 접근 못하게 하는걸 할 수 있네요!!!

    님 덕분에 찾았습니다.!
    감사합니다.!!
    답변하기