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 dashboardadmin_init hook + wp_redirect(site_url('/')) jika role = subscriber
  • Sembunyikan admin barwp_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.