Kuidas keelata WordPressi kasutaja

Mõni päev tagasi paluti mul luua süsteem, mis keelaks WordPressi kasutajal installida. Nii et ma lõin lihtsa pistikprogrammi ja soovisin teiega jagada selle plugina põhitõdesid. Selles õpetuses käsitleme WordPressi filtreid, toiminguid, kasutajate veergude haldamist ja veel mõnda toredat asja.


1. samm: looge pistikprogramm

Jällegi, siin on see väga keeruline, peate vaid looma uue kausta, kus on “wp-content / plugins” ja mida nimetatakse “ban-users”. Selles kaustas looge uus fail nimega “ban-users.php”, avage see ja kleepige see kood:

2. samm: lisage kasutajate profiililehele märkeruut

Esimene asi, mida peame tegema, on lisada märkeruut igale kasutaja profiili väljaande lehele. Selle ruudu märkimisel salvestab see kasutaja metavaliku, mis näitab, et kasutajal pole enam lubatud teie veebisaidile sisse logida.

Siin on kood:

/ **
* Administraatori algatus
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_admin_init () {

// Redigeeri kasutaja profiili
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');

See kood loob lihtsalt kutse funktsioonile, mille peame nüüd looma. See funktsioon lisab kasutajate profiililehele märkeruudu.

/ **
* Lisab kohandatud märkeruudu kasutajaversiooni lehele
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
tagasi;
}

globaalne $ user_id;

// Kasutaja ei saa ennast keelata
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
tagasi;
}

// Kontrollige, kas see on lubatud
$ kontrollitud = kontrollitud (get_user_option ('rc_banned', $ user_id, false));

// Kuvage ruut
kaja '
Keela kasutaja
'; }

Nüüd peab meil olema funktsioon, mis salvestab andmebaasi märkeruudu väärtuse:

/ **
* Salvestage kohandatud märkeruut
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_edit_user_profile_update () {

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

globaalne $ user_id;

// Kasutaja ei saa ennast keelata
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
tagasi;
}

// Lukusta
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'sisse') {
rc_ban_user ($ user_id);
} else {// Vabastage
rc_unban_user ($ user_id);
}

}

Nagu näete, kasutab see uus funktsioon kahte muud funktsiooni: rc_ban_users () ja rc_unban_users (). Nende nimed on üsna selged, esimene salvestab andmebaasis fakti, et kasutaja on keelustatud, teine ​​avab kasutajad.

3. samm: keelake kasutajad

Nüüd on aeg luua funktsioon rc_ban_users (). Selle funktsiooni puhul peame kontrollima, kas väärtus on juba salvestatud, ja kui ei, siis peame väärtuse talletama. Sellepärast kutsun funktsiooni, mida kirjeldan hiljem: rc_is_user_banned ():

/ **
* Keela kasutaja
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

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

4. samm: Kasutajate keelamine

Järgmine funktsioon on vastupidine äsja loodud funktsioonile: peame andma võimaluse kasutajatele keelduda:

/ **
* Kasutaja keelamine
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Uuenda staatust
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

5. samm: Kas kasutaja on keelatud?

Nägime rc_ban_users () ja rc_unban_users (), et kasutame funktsiooni rc_is_user_banned (), et kontrollida, kas kasutaja on keelatud. Loome selle:

/ **
* Kontrollib, kas kasutaja on juba keelatud
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Põhimõtteliselt tagastab see funktsioon lihtsalt väärtuse, mis on salvestatud rc_ban_users ().

Sel ajal on kasutajaväljaande lehel uus märkeruut, mis peaks meeldima:

ban_users_1

Viimane samm on funktsiooni sidumine sisselogimisvormiga, et vältida keelatud kasutajate sisselogimist.

5. samm: vältige keelatud kasutajate sisselogimist

Selleks peame kasutama WordPressi vaikefiltrit nimega “wp_authenticate_user”. Sellesse filtrisse ühendame funktsiooni nimega “rc_authenticate_user ()”. See funktsioon kasutab WP_Error klass.

/ **
* Kontrollige, kas kasutaja on sisselogimise ajal lukustatud
*
* @ juurdepääs avalik
* @ väärtus 1.0
* @ tagasivõtmine tühine
* /
funktsioon rc_authenticate_user ($ kasutaja) {

if (is_wp_error ($ kasutaja)) {
return $ user;
}

// Tagastamisviga, kui kasutajakonto on keelatud
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ keelatud) {
tagasta uus WP_Error ('rc_banned', __ ('VIGA: See kasutajakonto on keelatud. ',' Rc '));
}

return $ user;
}

Nüüd peame lihtsalt lisama filtri:

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

Järeldus

Lõime pistikprogrammi, mis lisab kasutaja profiili väljaande lehele ruutu. Kasutasime väärtuse märkimiseks ruutu teist funktsiooni ja loome funktsiooni, mis keelab WordPressi kasutaja ning teise funktsiooni kasutaja avamiseks. Lõime ka väikese funktsiooni, et kontrollida, kas kasutaja on keelatud või mitte. Ja lõpuks ühendasime funktsiooni filtrile “wp_authenticate_user”, kasutades WP_Error WordPressi vaikeklassi.

Kui teile see õpetus meeldis, siis meeldib teile selle pistikprogrammi esmaklassiline versioon: Kasutajate juurdepääsu haldur.

Laadige Githubis alla täielik kood

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