Skip to content

Open Registration

Ringkasan

Video ini membahas cara mengaktifkan open registration agar pengunjung bisa mendaftar akun di website. Kita juga mengatur conditional logic di header (login/logout button), redirect subscriber keluar dari admin dashboard, dan menyembunyikan admin bar untuk subscriber.


1. Mengaktifkan Open Registration

  1. Dashboard → Settings → General
  2. Centang "Anyone can register"
  3. Set New User Default RoleSubscriber
  4. Klik Save Changes

Keamanan: Subscriber tidak bisa melakukan apa-apa — hanya mengelola profil sendiri. Tidak ada risiko keamanan.

URL Pendaftaran:

https://yoursite.com/wp-sign-up.php

2. Update Tombol Sign Up di Header

File: header.php

php
<a href="<?php echo esc_url(wp_registration_url()); ?>" class="btn btn--small btn--orange float-left push-right">
  Sign Up
</a>

Gunakan wp_registration_url() (bukan hardcode /wp-sign-up.php) — lebih bersih dan fleksibel.


3. Conditional Logic: Login vs Logout

Tampilkan tombol berbeda tergantung status login user.

File: header.php

php
<?php if (is_user_logged_in()) { ?>
  <a href="<?php echo esc_url(wp_logout_url()); ?>" class="btn btn--small btn--dark-orange float-left btn--with-photo">
    <span class="site-header__avatar"><?php echo get_avatar(get_current_user_id(), 60); ?></span>
    <span class="btn__text">Log Out</span>
  </a>
<?php } else { ?>
  <a href="<?php echo esc_url(wp_login_url()); ?>" class="btn btn--small btn--orange float-left push-right">
    Log In
  </a>
  <a href="<?php echo esc_url(wp_registration_url()); ?>" class="btn btn--small btn--orange float-left">
    Sign Up
  </a>
<?php } ?>

Fungsi Penting:

FungsiPenjelasan
is_user_logged_in()Return true/false — cek apakah user sedang login
wp_logout_url()Generate URL untuk logout
wp_login_url()Generate URL untuk login
wp_registration_url()Generate URL untuk pendaftaran
get_current_user_id()Mendapatkan ID user yang sedang login
get_avatar($user_id, $size)Menampilkan gambar Gravatar user (argumen: user ID, ukuran pixel)

Tentang Gravatar:

  • Gravatar = Globally Recognized Avatar
  • Terhubung ke alamat email
  • Mengikuti user di seluruh internet
  • Setup di: gravatar.com

4. Redirect Subscriber ke Homepage

Subscriber tidak boleh melihat admin dashboard. Redirect otomatis ke homepage.

File: functions.php

php
// Redirect subscriber accounts out of admin and onto homepage
add_action('admin_init', 'redirectSubsToFrontend');

function redirectSubsToFrontend() {
  $ourCurrentUser = wp_get_current_user();

  if (count($ourCurrentUser->roles) == 1 AND $ourCurrentUser->roles[0] == 'subscriber') {
    wp_redirect(site_url('/'));
    exit;
  }
}

Penjelasan:

KodePenjelasan
add_action('admin_init', ...)Hook ke event saat admin dashboard dimuat
wp_get_current_user()Mendapatkan object user yang sedang login
$ourCurrentUser->rolesArray berisi semua role user
count(...) == 1Pastikan user hanya punya 1 role
roles[0] == 'subscriber'Role tersebut adalah subscriber
wp_redirect(site_url('/'))Redirect ke homepage
exitHentikan eksekusi PHP setelah redirect

Kenapa cek count == 1? Karena user bisa punya multiple roles. Kita hanya redirect jika HANYA subscriber (bukan subscriber + role lain).


5. Sembunyikan Admin Bar untuk Subscriber

File: functions.php

php
add_action('wp_loaded', 'noSubsAdminBar');

function noSubsAdminBar() {
  $ourCurrentUser = wp_get_current_user();

  if (count($ourCurrentUser->roles) == 1 AND $ourCurrentUser->roles[0] == 'subscriber') {
    show_admin_bar(false);
  }
}
KodePenjelasan
'wp_loaded'Hook ke event setelah WordPress selesai dimuat
show_admin_bar(false)Menyembunyikan admin bar di frontend

Hasil:

  • Subscriber login → tidak ada admin bar, tidak bisa akses /wp-admin
  • Admin/Editor login → admin bar tetap muncul

Alur Open Registration

Pengunjung (belum login)

    ├── Klik "Sign Up" → /wp-sign-up.php → Daftar akun baru
    │                                          │
    │                                     Role: Subscriber

    └── Klik "Log In" → /wp-login.php → Login

            ├── Subscriber? → Redirect ke Homepage
            │                  │
            │                  └── Admin bar tersembunyi

            └── Admin/Editor? → Dashboard (normal)

                                   └── Admin bar tampil