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
- Dashboard → Settings → General
- Centang "Anyone can register"
- Set New User Default Role → Subscriber
- 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.php2. 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:
| Fungsi | Penjelasan |
|---|---|
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:
| Kode | Penjelasan |
|---|---|
add_action('admin_init', ...) | Hook ke event saat admin dashboard dimuat |
wp_get_current_user() | Mendapatkan object user yang sedang login |
$ourCurrentUser->roles | Array berisi semua role user |
count(...) == 1 | Pastikan user hanya punya 1 role |
roles[0] == 'subscriber' | Role tersebut adalah subscriber |
wp_redirect(site_url('/')) | Redirect ke homepage |
exit | Hentikan 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);
}
}| Kode | Penjelasan |
|---|---|
'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