Cara Melarang Pengguna WordPress

Saya diminta beberapa hari yang lalu untuk membuat sistem yang akan melarang pengguna WordPress menginstal. Jadi saya membuat plugin sederhana dan saya ingin berbagi dengan Anda dasar-dasar plugin ini. Dalam tutorial ini kita akan membahas filter WordPress, tindakan, manajemen kolom pengguna dan beberapa hal hebat lainnya.


Langkah 1: Buat Plugin

Sekali lagi, ini sangat rumit, yang harus Anda lakukan adalah membuat folder baru dengan “wp-content / plugins” yang disebut “ban-users”. Di folder ini, buat file baru bernama “ban-users.php”, buka tempelkan kode ini:

Langkah 2: Tambahkan Kotak Centang Di Halaman Profil Pengguna

Hal pertama yang perlu kita lakukan adalah menambahkan kotak centang pada setiap halaman edisi profil pengguna. Ketika Anda akan mencentang kotak ini, ia akan menyimpan opsi meta pengguna yang akan menunjukkan bahwa pengguna tidak lagi diizinkan untuk masuk ke situs web Anda.

Ini kodenya:

/ **
* Admin init
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_admin_init () {

// Edit profil pengguna
add_action ('edit_user_profile', 'rc_edit_user_profile');
add_action ('edit_user_profile_update', 'rc_edit_user_profile_update');

}
add_action ('admin_init', 'rc_admin_init');

Kode ini hanya membuat panggilan ke fungsi yang harus kita buat sekarang. Fungsi ini akan menambahkan kotak centang ke halaman profil pengguna.

/ **
* Menambahkan kotak centang khusus ke halaman edisi pengguna
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
kembali;
}

global $ user_id;

// Pengguna tidak dapat menonaktifkannya sendiri
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
kembali;
}

// Periksa apakah diaktifkan
$ checked = checked (get_user_option ('rc_banned', $ user_id, false));

// Tampilkan kotak centang
gaung
Larang Pengguna
'; }

Kita sekarang perlu memiliki fungsi yang akan menyimpan nilai kotak centang ke dalam database:

/ **
* Simpan kotak centang khusus
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
kembali;
}

global $ user_id;

// Pengguna tidak dapat menonaktifkannya sendiri
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
kembali;
}

// Kunci
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Buka kunci
rc_unban_user ($ user_id);
}

}

Seperti yang Anda lihat, fungsi baru ini menggunakan dua fungsi lain: rc_ban_users () dan rc_unban_users (). Nama mereka cukup eksplisit, yang pertama akan menyimpan dalam database fakta bahwa pengguna dilarang, yang kedua akan membuka kunci pengguna.

Langkah 3: Larang Pengguna

Sekarang saatnya untuk membuat fungsi rc_ban_users (). Dalam fungsi ini kita perlu memeriksa apakah suatu nilai sudah tersimpan, dan jika tidak kita perlu menyimpan nilai tersebut. Itulah alasan mengapa saya memanggil fungsi yang akan saya jelaskan nanti: rc_is_user_banned ():

/ **
* Larang pengguna
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Memperbaharui status
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

Langkah 4: Batalkan Larangan Pengguna

Fungsi berikut ini berlawanan dengan yang baru saja kami buat: kami harus memberikan kemampuan untuk "mencekal" pengguna:

/ **
* Batalkan larangan pengguna
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Memperbaharui status
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Langkah 5: Apakah Pengguna Dilarang?

Kami melihat di rc_ban_users () dan rc_unban_users () bahwa kami menggunakan fungsi yang disebut rc_is_user_banned () untuk memeriksa apakah pengguna dilarang atau tidak. Mari kita ciptakan:

/ **
* Memeriksa apakah pengguna sudah dilarang
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Pada dasarnya, fungsi ini hanya mengembalikan nilai opsi yang disimpan di rc_ban_users ().

Saat ini kami memiliki kotak centang baru pada halaman edisi pengguna yang seharusnya seperti itu:

ban_users_1

Langkah terakhir adalah mengaitkan fungsi ke formulir login untuk menghindari pengguna yang dilarang masuk.

Langkah 5: Hindari Pengguna Terlarang Untuk Masuk

Untuk melakukannya, kita perlu menggunakan filter default WordPress yang disebut "wp_authenticate_user". Untuk filter ini, kami akan menghubungkan fungsi yang disebut "rc_authenticate_user ()". Fungsi ini akan menggunakan WP_Error class.

/ **
* Periksa apakah pengguna terkunci saat proses login
*
* @ akses publik
* @ sejak 1.0
* @return batal
* /
function rc_authenticate_user ($ user) {

if (is_wp_error ($ user)) {
mengembalikan $ user;
}

// Kembalikan kesalahan jika akun pengguna diblokir
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ banned) {
kembalikan WP_Error baru ('rc_banned', __ ('KESALAHAN: Akun pengguna ini dinonaktifkan. ',' Rc '));
}

mengembalikan $ user;
}

Sekarang, kita hanya perlu menambahkan filter:

add_filter ('wp_authenticate_user', 'rc_authenticate_user', 1);

Kesimpulan

Kami membuat plugin yang menambahkan kotak centang ke halaman edisi profil pengguna. Kami menggunakan fungsi kedua untuk menyimpan nilai pada kotak centang dan kami membuat fungsi untuk mencekal pengguna WordPress dan lainnya untuk membuka kunci pengguna. Kami juga membuat fungsi kecil untuk memeriksa apakah pengguna dilarang atau tidak. Dan kami akhirnya menghubungkan fungsi ke filter “wp_authenticate_user” menggunakan WP_Error WordPress default class.

Jika Anda menyukai tutorial ini, Anda akan menyukai versi premium dari plugin ini: Pengguna Access Manager.

Unduh Kode Lengkap Di Github

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map