워드프레스에서 특정 사용자 유형이 사용자 권한을 지정하고 싶은 경우가 있을 수 있습니다. 사용자 역할에 따라 특정 권한을 제한하거나 허용하고 싶은 경우 플러그인을 사용하거나 직접 코드로 권한을 제한할 수 있습니다.
이 글은 2015년도에 최초 작성되었지만 글의 내용을 보강하여 새로 발행되었습니다.
플러그인 사용: 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' ))
댓글을 특정 회원들에게만 달 수 있도록 하는 방법이 있을까요?
그러니까 가입하지 않은 회원이나 일반회원은 댓글들을 볼 수 없고
정회원이상 댓글을 달거나 이용 가능하도록 하는 방법이 있으면
도움이 될 듯 합니다 (단순히 사이트 가입한 회원이 아니라 정회원이상)
고맙습니다
문의하신 기능은 워드프레스 기본 기능에서는 지원되지 않습니다.
댓글을 다는 것은 로그인 사용자만 달 수 있도록 할 수 있지만, 댓글은 모든 사용자에게 표시됩니다. 원하는 경우 다음과 같은 CSS를 사용하여 비로그인 사용자(게스트)에게는 댓글이 표시되지 않도록 할 수 있을 것입니다.
.comment {
display:none;
}
.logged-in .comment {
display:inline;
}
위의 코드는 실제로 작동하는지 여부는 확인하지 못했지만, 시간이 되면 한 번 확인해보겠습니다.
일반회원, 정회원... 처럼 구분하는 경우에는 멤버십 플러그인(회원제 플러그인)으로 가능한지 확인해보시기 바랍니다.
회원 역할마다 다른 CSS 클래스(class)가 body 태그 등에 추가되는 경우에는 CSS로 조정이 가능할 것도 같습니다.
조금 더 생각해보니 comments.php 파일에서 정회원만 댓글을 달거나 이용 가능하도록 적절한 PHP 코드를 추가하면 어렵지 않게 가능할 것 같습니다.
안녕하세요.
user role editor 를 사용해서 회원별 권한을 수정해 보려고 했습니다.
그런데 관리자 화면에서 woocommerce 부분이 보이질 않습니다.
그래서 설치된 플러그인으로 들어가서 확인했더니
접근 권한이 없다고 나옵니다.
관리자 권한은 건드리지 않았는데 왜 그런지 잘 모르겠습니다.
또한 플러그인을 삭제 했었는데 여전히 보이질 않습니다.
안녕하세요?
유선상으로 말씀드렸듯이 User Role Editor는 매우 유명한 플러그인이고 많은 사용자가 사용하고 있습니다. (현재 40만 개 이상 사이트에서 이 플러그인이 사용 중이네요.)
말씀하신 증상이 User Role Editor의 버그인 것으로 생각되시면 User Role Editor에 문의해보실 수 있습니다. 특히 Pro 버전(https://www.role-editor.com/ )도 있으므로 Pro 버전을 구매하시면 지원까지 받을 수 있을 것입니다.
WPFront User Role Editor <---이거 프로 버전 사용하면 제가 원하는 라이브러리 접근 못하게 하는걸 할 수 있네요!!!
좋은 정보 감사합니다^^ 즐거운 하루 되세요.
인터넷강의 플렛폼을 만들었습니다.
마케팅 수업에 대한 권한을 가진 학생이 한정 기간 동안만 강의를 보고 그 후에 자동으로 만료되게 만들 수도 있나요?
현재 우커머스를 통해 상품을 등록한 후 구매 시 비메오 링크를 회차별로 구매내용에 적어두는 방식입니다,
결제 시스템이 우커머스로 결제하도록 만들어졌나요?
우커머스 공홈에서 판매하는 WooCommerce Subscriptions(우커머스 구독)라는 플러그인이 있는데요. 이 플러그인을 사용하면 주간, 월간 혹은 연간 방식으로 상품이나 제품을 구매할 수 있도록 한다고 하네요.
이 플러그인으로 원하는 기능을 구현할 수 있는지 우커머스에 한번 문의해보시겠어요?