Kaip uždrausti „WordPress“ vartotoją

Manęs paprašė prieš kelias dienas sukurti sistemą, kuri uždraustų „WordPress“ vartotojui įdiegti. Taigi sukūriau paprastą papildinį ir norėjau su jumis pasidalinti šio papildinio pagrindais. Šiame vadove apimsime „WordPress“ filtrus, veiksmus, vartotojų stulpelių valdymą ir dar keletą puikių dalykų.


1 veiksmas: sukurkite papildinį

Vėlgi, čia yra labai sudėtinga, viskas, ką jums reikia padaryti, tai sukurti naują aplanką su „wp-content / plugins“, vadinamą „ban-users“. Šiame aplanke sukurkite naują failą pavadinimu „ban-users.php“, atidarykite jį, įklijuokite šį kodą:

2 veiksmas: pridėkite žymės langelį Vartotojo profilio puslapyje

Pirmas dalykas, kurį turime padaryti, yra pridėti žymimąjį laukelį kiekviename vartotojo profilio leidimo puslapyje. Kai pažymėsite šį žymimąjį laukelį, jame bus išsaugota naudotojo meta parinktis, nurodanti, kad vartotojui nebeleidžiama prisijungti prie jūsų svetainės.

Štai kodas:

/ **
* Administratoriaus inicialas
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_admin_init () {

// Redaguoti vartotojo profilį
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');

Šis kodas tiesiog sukuria skambutį funkcijai, kurią turime sukurti dabar. Ši funkcija pridės žymės langelį prie vartotojo profilio puslapio.

/ **
* Prie vartotojo leidimo puslapio prideda pasirinktinį žymimąjį laukelį
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
grįžti;
}

globalus $ user_id;

// Vartotojas negali savęs išjungti
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
grįžti;
}

// Patikrinkite, ar įjungta
$ patikrinta = patikrinta (gauti_naudotojo pasirinkimą („rc_banned“, $ vartotojo_id, klaidinga));

// Rodyti žymimąjį laukelį
aidėti '
Uždrausti vartotoją
'; }

Dabar turime turėti funkciją, kuri duomenų bazėje išsaugotų žymimojo laukelio vertę:

/ **
* Išsaugokite pasirinktinį žymimąjį laukelį
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
grįžti;
}

globalus $ user_id;

// Vartotojas negali savęs išjungti
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
grįžti;
}

// Užraktas
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Atrakinti
rc_unban_user ($ user_id);
}

}

Kaip matote, ši nauja funkcija naudoja dar dvi funkcijas: rc_ban_users () ir rc_unban_users (). Jų vardai yra gana aiškūs, pirmasis duomenų bazėje įrašys faktą, kad vartotojas yra uždraustas, antrasis - atrakins vartotojus.

3 veiksmas: uždrausti vartotojus

Laikas sukurti „rc_ban_users ()“ funkciją. Vykdydami šią funkciją turime patikrinti, ar reikšmė jau yra išsaugota, o jei ne, turime ją saugoti. Štai kodėl aš paskambinu funkcijai, kurią aprašysiu vėliau: rc_is_user_banned ():

/ **
* Uždrausti vartotoją
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Atnaujinti statusą
if (! $ old_status) {
atnaujinti_naudotojo pasirinkimą („$ user_id“, „rc_banned“, true, false);
}
}

4 žingsnis: Panaikinti naudotojų draudimą

Ši funkcija yra priešinga nei ką tik sukurta: turime suteikti galimybę vartotojams „uždrausti“:

/ **
* Panaikinti vartotojo uždraudimą
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Atnaujinti statusą
if ($ old_status) {
atnaujinti_naudotojo pasirinkimą („$ user_id“, „rc_banned“, false, false);
}
}

5 žingsnis: Ar vartotojas yra uždraustas?

Rc_ban_users () ir rc_unban_users () pamatėme, kad mes naudojame funkciją, vadinamą rc_is_user_banned (), norėdami patikrinti, ar vartotojui draudžiama. Kurkime:

/ **
* Tikrina, ar vartotojas jau uždraustas
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Iš esmės ši funkcija paprasčiausiai grąžina parinkties, išsaugotos aplanke rc_ban_users (), vertę..

Šiuo metu vartotojo leidimo puslapyje turime naują žymimąjį laukelį, kuris turėtų patikti:

ban_users_1

Paskutinis žingsnis yra funkcijos prijungimas prie prisijungimo formos, kad būtų išvengta draudžiamų vartotojų prisijungimo.

5 žingsnis: Venkite draudžiamų vartotojų prisijungti

Norėdami tai padaryti, turime naudoti „WordPress“ numatytąjį filtrą, pavadintą „wp_authenticate_user“. Prie šio filtro pakabinsime funkciją, vadinamą „rc_authenticate_user ()“. Ši funkcija naudos WP_Error klasė.

/ **
* Patikrinkite, ar vartotojas nėra užrakintas prisijungimo metu
*
* @ prieiga visuomenei
* @since 1.0
* @atsukti negalioja
* /
funkcija rc_authenticate_user ($ vartotojas) {

if (is_wp_error ($ vartotojas)) {
grąžinti $ vartotoją;
}

// Grąžinimo klaida, jei vartotojo sąskaita uždrausta
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if (uždrausta $) {
grąžinti naują „WP_Error“ („rc_banned“, __ ('KLAIDA: Ši vartotojo sąskaita yra išjungta. ',' Rc '));
}

grąžinti $ vartotoją;
}

Dabar mums tereikia pridėti filtrą:

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

Išvada

Sukūrėme papildinį, kuris prideda žymimąjį laukelį prie vartotojo profilio leidimo puslapio. Mes panaudojome antrą funkciją vertės išsaugojimui žymimojoje dėžutėje ir sukuriame funkciją, skirtą uždrausti „WordPress“ vartotojui, o kitą - vartotojui atrakinti. Taip pat sukūrėme nedidelę funkciją, skirtą patikrinti, ar vartotojas yra uždraustas, ar ne. Ir mes pagaliau priskyrėme funkciją prie „wp_authenticate_user“ filtro naudodami „WP_Error WordPress“ numatytąją klasę..

Jei jums patiko ši instrukcija, jums patiks aukščiausios kokybės šio papildinio versija: „User Access Manager“.

Atsisiųskite visą „Github“ kodą

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