Mi s-a cerut în urmă cu câteva zile să creez un sistem care să interzică un utilizator WordPress de la o instalare. Așa că am creat un plugin simplu și am vrut să împărtășesc cu voi elementele de bază ale acestui plugin. În acest tutorial vom acoperi filtrele WordPress, acțiuni, gestionarea coloanelor utilizatorilor și alte lucruri mai grozave.


Pasul 1: Creează pluginul

Încă o dată, aici este foarte complicat, tot ce trebuie să faci este să creezi un nou folder cu „wp-content / plugins” numit „ban-users”. În acest folder, creați un nou fișier numit „ban-users.php”, deschideți-l să lipiți acest cod:

Pasul 2: Adăugați o casetă de selectare pe pagina de profil a utilizatorilor

Primul lucru pe care trebuie să îl facem este să adăugăm o casetă de selectare pe fiecare pagină de ediție a profilului de utilizator. Când veți verifica această casetă de selectare, aceasta va stoca o opțiune meta de utilizator care va indica faptul că utilizatorul nu mai are voie să se autentifice pe site-ul dvs. web..

Iată codul:

/ **
* Admin init
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_admin_init () {

// Editează profilul utilizatorului
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');

Acest cod înseamnă pur și simplu crearea unui apel către o funcție pe care trebuie să o creăm acum. Această funcție va adăuga o casetă de selectare la pagina de profil a utilizatorilor.

/ **
* Adăuga caseta de selectare personalizată la pagina ediției utilizatorului
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
întoarcere;
}

global $ user_id;

// Utilizatorul nu se poate dezactiva
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
întoarcere;
}

// Verificați dacă este activat
$ verificat = verificat (get_user_option ('rc_banned', $ user_id, false));

// Caseta de selectare afișare
ecou '
Interzicere utilizator
„; }

Acum trebuie să avem funcția care va salva în baza de date valoarea casetei de selectare:

/ **
* Salvați caseta de selectare personalizată
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
întoarcere;
}

global $ user_id;

// Utilizatorul nu se poate dezactiva
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
întoarcere;
}

// Lacăt
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Deblocare
rc_unban_user ($ user_id);
}

}

După cum puteți vedea această nouă funcție folosește alte două funcții: rc_ban_users () și rc_unban_users (). Numele lor sunt destul de explicite, primul va stoca în baza de date faptul că un utilizator este interzis, al doilea îi va debloca pe utilizatori.

Pasul 3: Interzicerea utilizatorilor

Acum este timpul să creăm funcția rc_ban_users (). În această funcție, trebuie să verificăm dacă o valoare este deja stocată și dacă nu, trebuie să stocăm valoarea. Acesta este motivul pentru care apelez la o funcție pe care o voi descrie mai târziu: rc_is_user_banned ():

/ **
* Interzicere utilizator
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Starea de actualizare
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', adevărat, fals);
}
}

Pasul 4: Anularea utilizatorilor

Următoarea funcție este opusă celei pe care tocmai am creat-o: trebuie să oferim capacitatea de a „dez-interzice” utilizatorii:

/ **
* Utilizator de interdicție
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Starea de actualizare
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Pasul 5: Este interzis utilizatorul?

Am văzut în rc_ban_users () și rc_unban_users () că folosim o funcție numită rc_is_user_banned () pentru a verifica dacă un utilizator este interzis sau nu. Să o creăm:

/ **
* Verifică dacă un utilizator este deja interzis
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_is_user_banned ($ user_id) {
returnare get_user_option ('rc_banned', $ user_id, false);
}

Practic, această funcție returnează pur și simplu valoarea opțiunii salvate în rc_ban_users ().

În acest moment, avem o casetă de validare nouă pe pagina ediției utilizatorului, care ar trebui să fie așa:

ban_users_1

Ultimul pas este să conectați o funcție la formularul de autentificare pentru a evita utilizatorii interzici să se autentifice.

Pasul 5: Evitați utilizatorii interzise să se conecteze

Pentru aceasta, trebuie să folosim un filtru implicit WordPress numit „wp_authenticate_user”. La acest filtru, vom conecta o funcție numită „rc_authenticate_user ()”. Această funcție va utiliza funcția Clasa WP_Error.

/ **
* Verificați dacă utilizatorul este blocat în timpul procesului de autentificare
*
* @acces public
* @since 1.0
* @return nul
* /
function rc_authenticate_user ($ user) {

if (is_wp_error ($ user)) {
returnare $ utilizator;
}

// Eroare de retur dacă contul de utilizator este interzis
$ interzis = get_user_option ('rc_banned', $ user-> ID, false);
if ($ interzis) {
returnează noul WP_Error ('rc_banned', __ ('EROARE: Acest cont de utilizator este dezactivat. ',' Rc '));
}

returnare $ utilizator;
}

Acum, trebuie doar să adăugăm filtrul:

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

Concluzie

Am creat un plugin care adaugă o casetă de selectare la pagina de ediție a profilului de utilizator. Am folosit o a doua funcție pentru a stoca valoarea pe caseta de selectare și am creat o funcție pentru a interzice un utilizator WordPress și o alta pentru a debloca un utilizator. De asemenea, am creat o mică funcție pentru a verifica dacă un utilizator este interzis sau nu. Și în cele din urmă am conectat o funcție la filtrul „wp_authenticate_user” folosind clasa implicită WordPress WP_Error.

Dacă v-a plăcut acest tutorial, vă va plăcea versiunea premium a acestui plugin: User Access Manager.

Descarcă codul complet pe Github

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