Skip to content

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

  1. Dashboard → Users → Add New (atau New → User di admin bar)
  2. Isi: Username, Email, Password
  3. Pilih Role yang sesuai

2. Lima Role Bawaan WordPress

RoleKemampuan
SubscriberHanya bisa mengelola profil sendiri (nama, email)
ContributorBisa membuat draft post/page, tapi tidak bisa publish
AuthorBisa membuat & publish konten, tapi hanya konten sendiri
EditorBisa membuat, edit & delete konten milik semua orang
AdministratorAkses 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

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:

PropertiPenjelasan
'capability_type' => 'event'Membuat set permissions unik untuk post type ini (bukan post default)
'map_meta_cap' => trueWordPress 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

  1. Plugins → Add New → cari "members role editor"
  2. Install plugin Members by MemberPress (200k+ instalasi)
  3. Klik Activate
  4. Navigasi: Members → Roles di sidebar admin

6. Membuat Custom Role: Event Planner

  1. Members → Roles → Add New Role
  2. Nama: Event Planner
  3. Setelah menambahkan capability_type => 'event' di kode, tab Events muncul
  4. Centang semua capabilities (create, edit, delete, dll)
  5. Klik Add Role

Assign Role ke User:

  1. Users → All Users → klik user
  2. Scroll ke bawah → ubah role menjadi Event Planner
  3. 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:

php
register_post_type('campus', array(
  'capability_type' => 'campus',
  'map_meta_cap' => true,
  // ... properti lainnya
));

Buat role baru:

  1. Members → Add New Role → nama: Campus Manager
  2. Klik tab Campus → centang semua capabilities
  3. Klik Add Role

8. Multiple Roles per User

Plugin Members memungkinkan menggabungkan beberapa role untuk satu user:

  1. Users → All Users → klik user
  2. Scroll ke bawah
  3. Pilih Event Planner DAN Campus Manager
  4. 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:

  1. Members → Roles → edit Administrator
  2. Klik tab Events → centang semua capabilities
  3. Klik tab Campus → centang semua capabilities
  4. Update
  5. 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!