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

Last Updated: 2023년 07월 21일 9개 댓글

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

이 글은 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' ))

참고:


9 개 댓글

Leave a Comment

  1. 댓글을 특정 회원들에게만 달 수 있도록 하는 방법이 있을까요?
    그러니까 가입하지 않은 회원이나 일반회원은 댓글들을 볼 수 없고
    정회원이상 댓글을 달거나 이용 가능하도록 하는 방법이 있으면
    도움이 될 듯 합니다 (단순히 사이트 가입한 회원이 아니라 정회원이상)
    고맙습니다

    응답
    • 문의하신 기능은 워드프레스 기본 기능에서는 지원되지 않습니다.

      댓글을 다는 것은 로그인 사용자만 달 수 있도록 할 수 있지만, 댓글은 모든 사용자에게 표시됩니다. 원하는 경우 다음과 같은 CSS를 사용하여 비로그인 사용자(게스트)에게는 댓글이 표시되지 않도록 할 수 있을 것입니다.

      .comment {
      display:none;
      }

      .logged-in .comment {
      display:inline;
      }

      위의 코드는 실제로 작동하는지 여부는 확인하지 못했지만, 시간이 되면 한 번 확인해보겠습니다.

      일반회원, 정회원... 처럼 구분하는 경우에는 멤버십 플러그인(회원제 플러그인)으로 가능한지 확인해보시기 바랍니다.

      회원 역할마다 다른 CSS 클래스(class)가 body 태그 등에 추가되는 경우에는 CSS로 조정이 가능할 것도 같습니다.

      응답
    • 조금 더 생각해보니 comments.php 파일에서 정회원만 댓글을 달거나 이용 가능하도록 적절한 PHP 코드를 추가하면 어렵지 않게 가능할 것 같습니다.

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

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

    응답
    • 안녕하세요?

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

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

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

    님 덕분에 찾았습니다.!
    감사합니다.!!
    응답
      • 인터넷강의 플렛폼을 만들었습니다.
        마케팅 수업에 대한 권한을 가진 학생이 한정 기간 동안만 강의를 보고 그 후에 자동으로 만료되게 만들 수도 있나요?

        현재 우커머스를 통해 상품을 등록한 후 구매 시 비메오 링크를 회차별로 구매내용에 적어두는 방식입니다,

      • 결제 시스템이 우커머스로 결제하도록 만들어졌나요?

        우커머스 공홈에서 판매하는 WooCommerce Subscriptions(우커머스 구독)라는 플러그인이 있는데요. 이 플러그인을 사용하면 주간, 월간 혹은 연간 방식으로 상품이나 제품을 구매할 수 있도록 한다고 하네요.

        Let customers subscribe to your products or services and pay on a weekly, monthly or annual basis.

        이 플러그인으로 원하는 기능을 구현할 수 있는지 우커머스에 한번 문의해보시겠어요?