Ikhtisar Chapter 17: User Roles & Permission
Apa yang Dipelajari?
Mengatur siapa boleh melakukan apa di dalam WordPress — dari role bawaan hingga custom role, open registration, dan kustomisasi halaman login.
Poin Utama
1. Lima Role Bawaan WordPress
| Role | Kemampuan |
|---|---|
| Subscriber | Hanya kelola profil sendiri |
| Contributor | Buat draft, tidak bisa publish |
| Author | Publish konten sendiri saja |
| Editor | Kelola semua konten semua orang |
| Administrator | Akses penuh |
2. Custom Permissions per Post Type
Secara default, semua CPT mewarisi permissions dari Posts. Tambahkan capability_type dan map_meta_cap agar terpisah:
php
register_post_type('event', array(
'capability_type' => 'event',
'map_meta_cap' => true,
// ...
));3. Plugin Members & Custom Role
Install plugin Members (by MemberPress) untuk membuat role kustom seperti "Event Planner" atau "Campus Manager". Setiap role hanya bisa mengakses post type yang diizinkan.
- Satu user bisa punya multiple roles (kombinasi)
- Jangan lupa grant capabilities ke Administrator setelah menambah
capability_type— kalau tidak, admin kehilangan akses
4. Open Registration
- Settings → General → centang "Anyone can register" → default role = Subscriber
- Gunakan
wp_registration_url()danwp_login_url()di header
5. Conditional Header: Login vs Logout
php
<?php if (is_user_logged_in()) { ?>
<!-- Tampilkan avatar + Log Out -->
<?php } else { ?>
<!-- Tampilkan Log In + Sign Up -->
<?php } ?>Fungsi penting: is_user_logged_in(), get_avatar(), wp_logout_url()
6. Proteksi Subscriber
- Redirect dari dashboard →
admin_inithook +wp_redirect(site_url('/'))jika role = subscriber - Sembunyikan admin bar →
wp_loadedhook +show_admin_bar(false) - Cek
count($roles) == 1 AND $roles[0] == 'subscriber'agar user multi-role tidak terkena
7. Kustomisasi Halaman Login
| Kustomisasi | Hook/Filter |
|---|---|
| URL logo → homepage | login_headerurl |
| Title text → nama situs | login_headertitle + get_bloginfo('name') |
| Load CSS theme | login_enqueue_scripts + wp_enqueue_style() |
| Ganti visual logo | Override CSS #login h1 a background-image |
Satu Kalimat
Dengan
capability_type, plugin Members, dan beberapa hook, kamu bisa mengontrol akses setiap user secara granular — dari dashboard sampai halaman login.