Ako zakázať užívateľovi WordPress

Pred pár dňami ma požiadali o vytvorenie systému, ktorý by zakázal užívateľovi WordPress inštaláciu. Vytvoril som teda jednoduchý doplnok a chcel som sa s vami podeliť o základy tohto doplnku. V tomto návode sa zameriame na filtre WordPress, akcie, správu stĺpcov používateľov a niektoré ďalšie skvelé veci.


Krok 1: Vytvorte doplnok

Ešte raz je to veľmi zložité, všetko, čo musíte urobiť, je vytvoriť nový priečinok s obsahom „wp-content / pluginy“ s názvom „ban-users“. V tomto priečinku vytvorte nový súbor s názvom „ban-users.php“, otvorte ho a vložte tento kód:

Krok 2: Pridajte na stránku profilu používateľov začiarkavacie políčko

Prvú vec, ktorú musíme urobiť, je pridať začiarkavacie políčko na každú stránku vydania profilu používateľa. Po začiarknutí tohto políčka sa uloží možnosť meta používateľa, ktorá indikuje, že používateľ sa už viac nemôže prihlásiť na váš web..

Tu je kód:

/ **
* Správcovská iniciácia
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_admin_init () {

// Upraviť užívateľský 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');

Tento kód jednoducho vytvára volanie funkcie, ktorú musíme teraz vytvoriť. Táto funkcia pridá na stránku profilu používateľov začiarkavacie políčko.

/ **
* Pridá vlastné začiarkavacie políčko na stránku vydania používateľa
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_edit_user_profile () {
if (! current_user_can ('edit_users'))) {
return;
}

global $ user_id;

// Používateľ sa nemôže sám zakázať
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
return;
}

// Skontrolujte, či je povolený
$ checked = checked (get_user_option ('rc_banned', $ user_id, false));

// Zobraziť začiarkavacie políčko
ozvena
Zakázať používateľovi
,; }

Teraz musíme mať funkciu, ktorá uloží do databázy hodnotu začiarkavacieho políčka:

/ **
* Uložiť vlastné začiarkavacie políčko
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_edit_user_profile_update () {

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

global $ user_id;

// Používateľ sa nemôže sám zakázať
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
return;
}

// Zamknúť
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Odomknúť
rc_unban_user ($ user_id);
}

}

Ako vidíte, táto nová funkcia používa dve ďalšie funkcie: rc_ban_users () a rc_unban_users (). Ich mená sú dosť explicitné, prvé z nich uloží do databázy skutočnosť, že užívateľ má zákaz, druhé odomkne používateľov.

Krok 3: Zakážte používateľom

Teraz je čas vytvoriť funkciu rc_ban_users (). V tejto funkcii musíme skontrolovať, či už je hodnota uložená a ak nie, musíme ju uložiť. To je dôvod, prečo volám funkciu, ktorú opíšem neskôr: rc_is_user_banned ():

/ **
* Zakážte používateľovi
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Aktualizovať stav
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

Krok 4: Zrušenie zákazu používateľov

Nasledujúca funkcia je opakom funkcie, ktorú sme práve vytvorili: Musíme používateľom zakázať prístup:

/ **
* Zrušiť zákaz používateľa
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Aktualizovať stav
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Krok 5: Je používateľ zakázaný?

V rc_ban_users () a rc_unban_users () sme videli, že používame funkciu s názvom rc_is_user_banned () na kontrolu, či je používateľ zakázaný alebo nie. Vytvorme to:

/ **
* Kontroluje, či je už používateľ zakázaný
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkcia rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

V podstate táto funkcia jednoducho vráti hodnotu možnosti uloženej v rc_ban_users ().

V súčasnosti máme na stránke vydania používateľa nové začiarkavacie políčko, ktoré by sa vám malo páčiť:

ban_users_1

Posledným krokom je pripojenie funkcie k prihlasovaciemu formuláru, aby sa zabránilo zakázaným používateľom prihlásiť sa.

Krok 5: Vyhnite sa používateľom, ktorým je zakázané prihlásenie

Preto potrebujeme použiť predvolený filter WordPress s názvom „wp_authenticate_user“. K tomuto filtru pripojíme funkciu s názvom „rc_authenticate_user ()“. Táto funkcia použije WP_Error class.

/ **
* Skontrolujte, či je používateľ uzamknutý počas procesu prihlásenia
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_authenticate_user ($ user) {

if (is_wp_error ($ user)) {
návrat $ user;
}

// Ak je používateľský účet zakázaný, chyba sa vracia
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ banned) {
vrátiť nové WP_Error ('rc_banned', __ ('CHYBA: Tento používateľský účet je zakázaný. ',' Rc '));
}

návrat $ user;
}

Teraz stačí pridať filter:

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

záver

Vytvorili sme doplnok, ktorý na stránku vydania používateľského profilu pridá začiarkavacie políčko. Druhú funkciu sme použili na uloženie hodnoty do začiarkavacieho políčka a vytvorili sme funkciu, ktorá zakáže užívateľovi WordPress a ďalšia funkcia na odomknutie používateľa. Vytvorili sme aj malú funkciu na overenie, či je používateľ zakázaný alebo nie. A nakoniec sme pripojili funkciu k filtru „wp_authenticate_user“ pomocou predvolenej triedy WP_Error WordPress..

Ak sa vám tento tutoriál páčil, budete milovať prémiovú verziu tohto doplnku: Users Access Manager.

Stiahnite si celý kód na Github

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