Skip to content

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 ​

RoleKemampuan
SubscriberHanya kelola profil sendiri
ContributorBuat draft, tidak bisa publish
AuthorPublish konten sendiri saja
EditorKelola semua konten semua orang
AdministratorAkses 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 ​

  1. Settings → General → centang "Anyone can register" → default role = Subscriber
  2. Gunakan wp_registration_url() dan wp_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_init hook + wp_redirect(site_url('/')) jika role = subscriber
  • Sembunyikan admin bar → wp_loaded hook + show_admin_bar(false)
  • Cek count($roles) == 1 AND $roles[0] == 'subscriber' agar user multi-role tidak terkena

7. Kustomisasi Halaman Login ​

KustomisasiHook/Filter
URL logo → homepagelogin_headerurl
Title text → nama situslogin_headertitle + get_bloginfo('name')
Load CSS themelogin_enqueue_scripts + wp_enqueue_style()
Ganti visual logoOverride 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.