User Roles and Permissions
Ringkasan
Video ini membahas sistem user roles dan permissions di WordPress. Kita belajar tentang 5 role bawaan WordPress, cara membuat custom role menggunakan plugin Members, dan cara mengatur capability_type pada custom post types agar permissions bisa dikontrol per post type.
1. Membuat User Baru di WordPress
- Dashboard → Users → Add New (atau New → User di admin bar)
- Isi: Username, Email, Password
- Pilih Role yang sesuai
2. Lima Role Bawaan WordPress
| Role | Kemampuan |
|---|---|
| Subscriber | Hanya bisa mengelola profil sendiri (nama, email) |
| Contributor | Bisa membuat draft post/page, tapi tidak bisa publish |
| Author | Bisa membuat & publish konten, tapi hanya konten sendiri |
| Editor | Bisa membuat, edit & delete konten milik semua orang |
| Administrator | Akses penuh ke semua fitur website |
Tip keamanan: Jangan berikan role Administrator kecuali user benar-benar tech-savvy!
3. Masalah: Custom Post Types Mewarisi Permissions dari Posts
Secara default, semua custom post types (events, campuses, programs, professors) mewarisi permissions dari blog posts. Artinya:
- Editor bisa mengelola SEMUA post types
- Tidak bisa membatasi akses per post type
4. Solusi: capability_type dan map_meta_cap
Tambahkan 2 properti di register_post_type() untuk membuat permissions terpisah:
File: mu-plugins/university-post-types.php
// Contoh untuk Event post type
register_post_type('event', array(
'capability_type' => 'event', // Permissions terpisah dari 'post'
'map_meta_cap' => true, // WordPress otomatis enforce permissions
'supports' => array('title', 'editor', 'excerpt'),
'rewrite' => array('slug' => 'events'),
'has_archive' => true,
'public' => true,
'show_in_rest' => true,
'labels' => array(
'name' => 'Events',
// ... labels lainnya
)
));Penjelasan:
| Properti | Penjelasan |
|---|---|
'capability_type' => 'event' | Membuat set permissions unik untuk post type ini (bukan post default) |
'map_meta_cap' => true | WordPress otomatis menerapkan permissions yang benar pada waktu yang tepat |
Tanpa
map_meta_cap => true, kamu harus menulis logika custom sendiri kapan permissions diperlukan.
5. Install Plugin Members
- Plugins → Add New → cari "members role editor"
- Install plugin Members by MemberPress (200k+ instalasi)
- Klik Activate
- Navigasi: Members → Roles di sidebar admin
6. Membuat Custom Role: Event Planner
- Members → Roles → Add New Role
- Nama: Event Planner
- Setelah menambahkan
capability_type => 'event'di kode, tab Events muncul - Centang semua capabilities (create, edit, delete, dll)
- Klik Add Role
Assign Role ke User:
- Users → All Users → klik user
- Scroll ke bawah → ubah role menjadi Event Planner
- Klik Update User
Hasil: User hanya melihat menu Events di sidebar admin (tidak ada post types lain).
7. Contoh Kedua: Campus Manager
Tambahkan capability_type untuk Campus:
register_post_type('campus', array(
'capability_type' => 'campus',
'map_meta_cap' => true,
// ... properti lainnya
));Buat role baru:
- Members → Add New Role → nama: Campus Manager
- Klik tab Campus → centang semua capabilities
- Klik Add Role
8. Multiple Roles per User
Plugin Members memungkinkan menggabungkan beberapa role untuk satu user:
- Users → All Users → klik user
- Scroll ke bawah
- Pilih Event Planner DAN Campus Manager
- Update User
Hasil: User bisa mengelola Events DAN Campuses, tapi bukan post types lain.
Ini sangat powerful — buat banyak role spesifik, lalu kombinasikan sesuai kebutuhan setiap coworker.
9. Jangan Lupa: Grant Capabilities ke Administrator
Setelah menambahkan capability_type, Administrator kehilangan akses ke post type tersebut! Harus di-grant manual:
- Members → Roles → edit Administrator
- Klik tab Events → centang semua capabilities
- Klik tab Campus → centang semua capabilities
- Update
- Refresh halaman
Diagram Role & Capability
WordPress Roles
│
┌─────────┬───────────┼───────────┬──────────┐
│ │ │ │ │
Subscriber Contributor Author Editor Administrator
│ │ │ │ │
(none) draft only own posts all posts everything
│
Custom Roles (via Members plugin)
│
┌───────────┼───────────┐
│ │ │
Event Planner Campus Professor
(events only) Manager Manager
(campuses) (professors)
│
Bisa dikombinasi per user!