Hogyan lehet betiltani a WordPress felhasználót

Néhány nappal ezelőtt arra kértek tőlem, hogy hozzon létre egy rendszert, amely megtiltja a WordPress felhasználót a telepítéstől. Tehát létrehoztam egy egyszerű plugint, és szerettem volna megosztani veled a plugin alapjait. Ebben az oktatóanyagban a WordPress szűrőket, műveleteket, a felhasználói oszlopok kezelését és néhány további nagyszerű dolgot ismertetünk.


1. lépés: Hozza létre a beépülő modult

Még egyszer, itt nagyon bonyolult, csak annyit kell tennie, hogy hozzon létre egy új mappát, amelyen „wp-content / plugins” található, az úgynevezett „ban-users”. Ebben a mappában hozzon létre egy új, „ban-users.php” nevű fájlt, nyissa meg és illessze be ezt a kódot:

2. lépés: Helyezzen be egy jelölőnégyzetet a felhasználók profiloldalára

Az első dolog, amit meg kell tennünk, az, hogy minden felhasználói profil-kiadási oldalhoz jelölőnégyzetet adjon hozzá. Ha bejelöli ezt a jelölőnégyzetet, akkor a felhasználói meta opciót tárolja, amely jelzi, hogy a felhasználó már nem engedélyezett, hogy bejelentkezzen az Ön webhelyére.

Íme a kód:

/ **
* Rendszergazda init
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_admin_init () függvény {

// Felhasználói profil szerkesztése
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');

Ez a kód egyszerűen hívást hoz létre egy olyan funkcióhoz, amelyet most létre kell hoznunk. Ez a funkció jelölőnégyzetet fog hozzáadni a felhasználói profiloldalhoz.

/ **
* Az egyedi jelölőnégyzetet hozzáadja a felhasználói kiadás oldalához
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_edit_user_profile () függvény () {
if (! current_user_can ('edit_users')) {
Visszatérés;
}

globális $ user_id;

// A felhasználó nem tudja letiltani magát
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
Visszatérés;
}

// Ellenőrizze, hogy engedélyezve van-e
$ ellenőrzött = ellenőrizve (get_user_option ('rc_banned', $ user_id, false));

// Jelölje be a jelölőnégyzetet
visszhang ”
Felhasználó letiltása
„ }

Most olyan funkcióval kell rendelkeznie, amely elmenti az adatbázisba a jelölőnégyzet értékét:

/ **
* Az egyedi jelölőnégyzet mentése
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_edit_user_profile_update () funkció

if (! current_user_can ('edit_users')) {
Visszatérés;
}

globális $ user_id;

// A felhasználó nem tudja letiltani magát
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
Visszatérés;
}

// Zár
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'be') {
rc_ban_user ($ user_id);
} else {// Kinyit
rc_unban_user ($ user_id);
}

}

Amint láthatja, ez az új funkció két másik funkciót is használ: rc_ban_users () és rc_unban_users (). A nevük meglehetősen explicit, az első az adatbázisban tárolja azt a tényt, hogy a felhasználót tiltják, a második feloldja a felhasználókat.

3. lépés: Felhasználók tiltása

Ideje létrehozni az rc_ban_users () függvényt. Ebben a funkcióban ellenőriznünk kell, hogy egy érték már tárolva van-e, és ha nem, akkor azt kell tárolnunk. Ez az oka annak, hogy egy olyan funkciót hívjak, amelyet később leírok: rc_is_user_banned ():

/ **
* Felhasználó betiltása
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_ban_user függvény ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Állapot frissítése
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

4. lépés: A felhasználók betiltása

A következő funkció ellentétes az éppen létrehozott funkcióval: lehetőséget kell adnunk a felhasználók „betiltására”:

/ **
* Felhasználó betiltása
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_unban_user függvény ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Állapot frissítése
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

5. lépés: A felhasználót tiltják?

Az rc_ban_users () és rc_unban_users () fájlokban láttuk, hogy az rc_is_user_banned () nevû függvényt használjuk annak ellenőrzésére, hogy a felhasználót tiltják-e vagy sem. Hozzuk létre:

/ **
* Ellenőrzi, hogy a felhasználót már betiltották-e
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_is_user_banned függvény ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Alapvetően ez a függvény egyszerűen visszaadja az rc_ban_users () fájlba mentett opció értékét.

Jelenleg van egy új jelölőnégyzet a felhasználói kiadás oldalán, amely tetszik:

ban_users_1

Az utolsó lépés egy funkció hozzákapcsolása a bejelentkezési űrlaphoz, hogy elkerüljük a betiltott felhasználók bejelentkezését.

5. lépés: Kerülje el a tiltott felhasználók belépését

Ehhez használnunk kell egy WordPress alapértelmezett szűrőt, melynek neve „wp_authenticate_user”. Ehhez a szűrőhöz hozzákapcsolunk egy „rc_authenticate_user ()” nevű funkciót. Ez a funkció a WP_Error osztály.

/ **
* Ellenőrizze, hogy a felhasználó zárolva van-e a bejelentkezés során
*
* @ hozzáférés nyilvános
* @since 1.0
* @ visszatérés érvénytelen
* /
rc_authenticate_user függvény ($ felhasználó) {

if (is_wp_error ($ felhasználó)) {
visszatérő $ felhasználó;
}

// Visszaadási hiba, ha a felhasználói fiók tiltva van
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ tiltva) {
új WP_Error visszaadása ('rc_banned', __ ('HIBA: Ez a felhasználói fiók le van tiltva. ',' Rc '));
}

visszatérő $ felhasználó;
}

Most hozzá kell adnunk a szűrőt:

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

Következtetés

Készítettünk egy plugint, amely jelölőnégyzetet ad a felhasználói profil kiadásának oldalához. Egy második függvényt használtunk az érték tárolásához a jelölőnégyzeten, és létrehozunk egy funkciót a WordPress felhasználó tiltására, és egy funkciót a felhasználó feloldásához. Készítettünk egy kis funkciót is annak ellenőrzésére, hogy a felhasználót tiltják-e vagy sem. És végül hozzákapcsoltunk egy funkciót a “wp_authenticate_user” szűrőhöz a WP_Error WordPress alapértelmezett osztály használatával.

Ha tetszett ez az oktatóprogram, akkor szeretni fogja a plugin prémium verzióját: a User Access Manager.

Töltse le a teljes kódot a Githubon

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