Kako prepovedati WordPress uporabnika

Pred nekaj dnevi sem bil vprašan, ali naj sistem ustvari prepoved uporabniku WordPress-a za namestitev. Tako sem ustvaril preprost vtičnik in želel sem z vami deliti osnove tega vtičnika. V tej vadnici bomo zajemali WordPress filtre, dejanja, upravljanje stolpcev uporabnikov in še nekaj odličnih stvari.


1. korak: Ustvarite vtičnik

Še enkrat, tukaj je zelo zapleteno, vse kar morate storiti je, da ustvarite novo mapo z “wp-content / plugins”, imenovanimi “ban-users”. V tej mapi ustvarite novo datoteko z imenom “ban-users.php”, odprite jo, prilepite to kodo:

2. korak: Dodajte potrditveno polje na strani uporabnikov profila

Prva stvar, ki jo moramo storiti, je, da na vsako stran izdaje uporabniških profilov dodamo potrditveno polje. Ko boste potrdili to potrditveno polje, bo shranjena meta-možnost uporabnika, ki bo pokazala, da uporabnik ni več dovoljen za prijavo na svoje spletno mesto.

Tu je koda:

/ **
* Administrator init
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_admin_init () {

// Uredi uporabniški profil
dodajanje ('edit_user_profile', 'rc_edit_user_profile');
dodajanje ('edit_user_profile_update', 'rc_edit_user_profile_update');

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

Ta koda preprosto ustvarja klic na funkcijo, ki jo moramo zdaj ustvariti. Ta funkcija bo dodala potrditveno polje na stran s profilom uporabnikov.

/ **
* Na stran z uporabniško izdajo doda potrditveno polje po meri
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_edit_user_profile () {
if (! trenutni_user_can ('edit_users')) {
vrnitev;
}

globalni $ user_id;

// Uporabnik se ne more onemogočiti
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
če ($ current_user_id == $ user_id) {
vrnitev;
}

// Preverite, če je omogočeno
$ check = preverjeno (get_user_option ('rc_banned', $ user_id, false));

// Prikaži polje
odmev '
Uporabnik prepovedi
'; }

Zdaj moramo imeti funkcijo, ki bo v bazo shranila vrednost potrditvenega polja:

/ **
* Shrani potrditveno polje po meri
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_edit_user_profile_update () {

if (! trenutni_user_can ('edit_users')) {
vrnitev;
}

globalni $ user_id;

// Uporabnik se ne more onemogočiti
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
če ($ current_user_id == $ user_id) {
vrnitev;
}

// Zaklepanje
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'vklopljen') {
rc_ban_user ($ user_id);
} else {// Odkleni
rc_unban_user ($ user_id);
}

}

Kot lahko vidite, ta nova funkcija uporablja še dve funkciji: rc_ban_users () in rc_unban_users (). Njihova imena so dokaj eksplicitna, prvi bo v bazo shranil dejstvo, da je uporabnik prepovedan, drugi pa bo uporabnike odklenil.

3. korak: Prepovedati uporabnike

Čas je, da ustvarite funkcijo rc_ban_users (). V tej funkciji moramo preveriti, ali je vrednost že shranjena, in če ne, moramo vrednost shraniti. Zato pokličem funkcijo, ki jo bom opisal kasneje: rc_is_user_banned ():

/ **
* Prepovedati uporabnika
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Posodobi status
če (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

4. korak: Prekini prepoved uporabnikov

Naslednja funkcija je nasprotna kot pravkar ustvarjena: uporabnikom moramo omogočiti »prepoved«:

/ **
* Uporabnik brez prepovedi
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Posodobi status
če ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

5. korak: Uporabnik je prepovedan?

V rc_ban_users () in rc_unban_users () smo videli, da uporabljamo funkcijo z imenom rc_is_user_banned (), da preverimo, ali je uporabnik prepovedan ali ne. Ustvarimo ga:

/ **
* Preveri, ali je uporabnik že prepovedan
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_is_user_banned ($ user_id) {
vrni get_user_option ('rc_banned', $ user_id, false);
}

V bistvu ta funkcija preprosto vrne vrednost možnosti, shranjene v rc_ban_users ().

Trenutno je na strani z izdajo uporabnikov novo potrditveno polje, ki bi moralo biti tako:

ban_users_1

Zadnji korak je priključitev funkcije na obrazec za prijavo, da se prepreči prepovedano uporabnikom prijavo.

5. korak: Izogibajte se prijavi prepovedanih uporabnikov

Za to moramo uporabiti privzeti filter WordPress z imenom "wp_authenticate_user". Na ta filter bomo priključili funkcijo, imenovano "rc_authenticate_user ()". Ta funkcija bo uporabila WP_Error razred.

/ **
* Preverite, ali je uporabnik med postopkom prijave zaklenjen
*
* @ dostopna javnost
* @since 1.0
* @ neveljavna razveljavitev
* /
funkcija rc_authenticate_user ($ uporabnik) {

če (is_wp_error ($ uporabnik)) {
vrniti $ uporabnika;
}

// Napaka pri vrnitvi, če je uporabniški račun prepovedan
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
če ($ prepovedano) {
vrni novo WP_Error ('rc_banned', __ ('NAPAKA: Ta uporabniški račun je onemogočen. ',' Rc '));
}

vrniti $ uporabnika;
}

Zdaj moramo samo dodati filter:

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

Zaključek

Ustvarili smo vtičnik, ki doda potrditveno polje na stran z izdajo uporabniških profilov. Za shranjevanje vrednosti v potrditveno polje smo uporabili drugo funkcijo in ustvarili funkcijo za prepoved uporabnika WordPressa in druge, da uporabnika odklene. Ustvarili smo tudi majhno funkcijo za preverjanje, ali je uporabnik prepovedan ali ne. In končno smo funkcijo priklopili na filter "wp_authenticate_user" z uporabo privzetega razreda WP_Error WordPress.

Če vam je bila všeč ta vadnica, vam bo všeč premijska različica tega vtičnika: Uporabnik Upravitelj dostopa.

Prenesite celotno kodo na Github

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me