-
목차
🧠 왜 사용자 권한 시스템이 중요한가?
워드프레스는 기본적으로 사용자 역할(Role)과 권한(Capability) 기반의
RBAC(Role Based Access Control) 시스템을 사용합니다.관리자는 모든 권한을 가지며,
편집자·작성자·구독자 등은 제한된 역할만 수행 가능하죠.하지만!
이 기본 구조로는 복잡한 멤버십, 교육 플랫폼, 멀티 작가 운영이 어렵습니다.👉 그래서 우리가 직접 사용자 역할과 권한을 커스터마이징해야 합니다.
✅ 기본 제공 사용자 역할과 권한
역할주요 권한Administrator 전체 제어 가능, 사용자 관리 포함 Editor 게시글, 페이지 편집·삭제·게시 가능 Author 자신이 쓴 글만 편집·게시 가능 Contributor 글 작성 가능, 게시 불가 Subscriber 로그인·댓글 작성만 가능 📌 이 외의 역할은 직접 추가하여 세분화할 수 있습니다.
🧩 Role & Capability 핵심 개념
요소설명Role 사용자 그룹 (예: editor, premium_member) Capability 실제 수행 가능한 권한 (예: edit_posts, read_private_pages) 1개의 Role에는 여러 개의 Capability가 포함됩니다.
🛠 사용자 역할과 권한 확인 및 추가 – functions.php
1. 새로운 역할 추가
php복사편집add_role('premium_member', '프리미엄 회원', array( 'read' => true, 'edit_posts' => false, 'view_premium_content' => true ));📌 이 역할은 글 편집은 못 하지만, view_premium_content라는 커스텀 권한을 가집니다.
2. 권한 부여/회수
php복사편집// 권한 추가 $role = get_role('editor'); $role->add_cap('edit_theme_options'); // 권한 제거 $role->remove_cap('delete_pages');관리자 또는 플러그인 실행 시 동적으로 제어 가능
3. 특정 권한을 가진 사용자만 접근
php복사편집if ( current_user_can('view_premium_content') ) { echo '<p>프리미엄 콘텐츠입니다.</p>'; } else { echo '<p>권한이 없습니다.</p>'; }
🧪 플러그인 활용 – 비개발자도 권한 제어 가능
추천 플러그인
이름특징Members (by MemberPress) 사용자 역할 생성/수정/삭제, UI 기반 제어 User Role Editor 권한 트리 UI, 조건부 역할 생성 Advanced Access Manager 게시글/페이지 단위 접근 제어 가능 WPFront User Role Editor 타임라인 기반 권한 변경 스케줄링 지원
📦 실전 예제: 강의 플랫폼 역할 구성
역할Capability 예시instructor edit_posts, upload_files, publish_courses student read, view_lesson_content premium_student view_lesson_content, download_materials guest read_only_public
💡 사용자 역할 확장 팁
- 기본 역할 수정보다는 새 역할 추가가 안전
- 커스텀 Capability는 if(current_user_can())으로 직접 제어
- CPT(커스텀 포스트 타입) 등록 시 capability_type 설정 가능
php복사편집register_post_type('course', array( 'capability_type' => 'course', 'map_meta_cap' => true, ));이렇게 하면 edit_course, delete_course 같은 커스텀 권한 자동 생성 가능!
✅ 고급 권한 설계 체크리스트
항목완료 여부새로운 역할 생성 및 이름 설정 ✅ / ❌ 역할에 커스텀 권한(cap) 지정 ✅ / ❌ 조건문(current_user_can)으로 권한 제어 ✅ / ❌ CPT별 capability 분리 설정 ✅ / ❌ 관리자 패널 내 사용자 역할 테스트 ✅ / ❌ '워드프레스' 카테고리의 다른 글
🚀 헤드리스(Headless) 워드프레스란? (2) 2025.04.28 🔧 구텐베르크(Gutenberg)란? (4) 2025.04.27 🔐 워드프레스 REST API는 기본적으로 "오픈"되어 있다? (1) 2025.04.27 🌐 멀티사이트(Multisite)란? (2) 2025.04.26 ⏱ WP-Cron이 뭐지? 서버 크론과는 다르다! (2) 2025.04.26 🧠 워드프레스는 "조건별로" 템플릿을 불러옵니다 (1) 2025.04.26 🧠 왜 직접 플러그인을 만들어야 할까? (2) 2025.04.25 🧠 왜 DB 구조를 이해해야 하는가? (2) 2025.04.25