WordPress: Buat Templat Halaman yang Mengharuskan Pengguna Terdaftar dan Masuk
Kami sedang menyelesaikan penerapan tema khusus di situs klien, dan mereka meminta kami membangun semacam interaksi di mana beberapa halaman dibatasi untuk pelanggan terdaftar. WordPress memang menawarkan opsi Visibilitas untuk halaman, tapi itu tidak mengakomodasi skenario ini.
- Swasta – Memilih visibilitas sebagai pribadi hanya memungkinkan administrator dan editor untuk melihat konten.
- Dilindungi kata sandi – memerlukan kode unik yang diterapkan pada setiap halaman untuk melihat konten.
Pada awalnya, kami berpikir untuk mengimplementasikan plugin pihak ketiga, namun solusinya sederhana. Kita bisa membuat template unik yang mengharuskan pengunjung untuk mendaftar dan login untuk melihat halaman.
Templat WordPress: Khusus Pelanggan
Pertama, kami menyalin templat halaman klien kami (page.php
) dalam anak tema. Untuk membuat template, Anda perlu menambahkan beberapa kode ke bagian atas halaman Anda:
<?php /* Template Name: Subscribers Only */ ?>
Selanjutnya, cari baris di kode halaman Anda yang menampilkan konten. Ini akan terlihat seperti ini:
<?php the_content(); ?>
Sekarang, Anda harus membungkus beberapa kode di sekitar baris itu:
<?php
$redirect_url = get_permalink(); // Get the current page's URL
if (is_user_logged_in()) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Subscriber Only</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Berikut penjelasan kodenya dalam poin-poin:
$redirect_url = get_permalink();
: Baris ini mengambil URL halaman saat ini dan menyimpannya dalam variabel$redirect_url
.if (is_user_logged_in()) :
: Pernyataan kondisional ini memeriksa apakah pengguna sudah login.- Jika pengguna login, kode dalam blok ini dieksekusi.
<h2><?php the_title(); ?></h2>
: Ini menampilkan judul halaman saat ini.<?php the_content(); ?>
: Ini menampilkan konten halaman saat ini.
- Jika pengguna belum login, kode di dalamnya
else
blok dieksekusi.<h2>Subscriber Only</h2>
: Ini menampilkan judul yang menunjukkan bahwa konten tersebut dibatasi.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Ini menampilkan pesan yang menjelaskan bahwa konten dibatasi untuk peran tertentu dan menyediakan tautan “Masuk”. Tautannyahref
atribut diatur ke URL login yang dihasilkan olehwp_login_url($redirect_url)
, memastikan bahwa pengguna dialihkan kembali ke halaman saat ini setelah masuk.
Kode ini secara efektif memeriksa apakah pengguna masuk dan, jika tidak, mendorong mereka untuk masuk untuk mengakses konten yang dibatasi, dengan tautan yang mengarahkan mereka kembali ke halaman yang mereka coba lihat.
Lihat Berdasarkan Peran Pengguna Tertentu
Anda juga dapat membatasi konten untuk peran pengguna tertentu jika Anda ingin:
<?php
$allowed_roles = array('subscriber', 'editor', 'author'); // Add the roles you want to allow
$user = wp_get_current_user();
$redirect_url = get_permalink();
if (array_intersect($allowed_roles, $user->roles)) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Restricted Access</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles.
<a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Berikut penjelasan kodenya dalam poin-poin:
$allowed_roles = array('subscriber', 'editor', 'author');
: Baris ini membuat serangkaian peran yang diizinkan, menentukan peran pengguna mana yang diizinkan untuk mengakses konten. Anda dapat menyesuaikan array ini untuk menyertakan peran yang ingin Anda izinkan.$user = wp_get_current_user();
: Kode ini mengambil informasi tentang pengguna saat ini, termasuk peran mereka.$redirect_url = get_permalink();
: Baris ini menyimpan URL halaman saat ini di$redirect_url
variabel, yang akan digunakan untuk mengarahkan pengguna kembali ke halaman saat ini setelah mereka login.if (array_intersect($allowed_roles, $user->roles)) :
: Pernyataan kondisional ini memeriksa apakah peran pengguna bersinggungan dengan peran yang tercantum dalam$allowed_roles
Himpunan. Dengan kata lain, ia memeriksa apakah pengguna memiliki salah satu peran yang diizinkan.- Jika pengguna memiliki salah satu peran yang diizinkan, kode dalam blok ini akan dieksekusi.
<h2><?php the_title(); ?></h2>
: Ini menampilkan judul halaman saat ini.<?php the_content(); ?>
: Ini menampilkan konten halaman saat ini.
- Jika pengguna tidak memiliki salah satu peran yang diperbolehkan, kode di dalamnya
else
blok dieksekusi.<h2>Restricted Access</h2>
: Ini menampilkan judul yang menunjukkan bahwa konten tersebut dibatasi.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Ini menampilkan pesan yang menjelaskan bahwa konten dibatasi untuk peran tertentu dan menyediakan tautan “Masuk”. Tautannyahref
atribut diatur ke URL login yang dihasilkan olehwp_login_url($redirect_url)
, memastikan bahwa pengguna dialihkan kembali ke halaman saat ini setelah masuk.
Kode ini secara efektif membatasi akses ke peran tertentu, dan jika pengguna tidak memiliki salah satu peran yang diizinkan, kode ini akan meminta mereka untuk masuk dengan tautan yang akan mengarahkan mereka kembali ke halaman saat ini setelah masuk.
Pilih Templat Anda
Untuk memanfaatkan halaman ini, Anda harus memilih Hanya Pelanggan templat halaman di bagian lanjutan opsi halaman Anda (di sidebar). Ini akan membatasi halaman untuk pembaca yang login atau peran yang Anda tentukan.