Jak zakázat uživatele WordPress

Před několika dny jsem byl požádán o vytvoření systému, který by zakázal uživateli WordPress instalaci. Vytvořil jsem tedy jednoduchý plugin a chtěl jsem se s vámi podělit o základy tohoto pluginu. V tomto tutoriálu se budeme zabývat filtry WordPress, akce, správa sloupců uživatelů a některé další skvělé věci.


Krok 1: Vytvořte plugin

Zde je to velmi komplikované, vše, co musíte udělat, je vytvořit novou složku s „wp-content / pluginy“ nazvanou „ban-users“. V této složce vytvořte nový soubor s názvem „ban-users.php“, otevřete jej a vložte tento kód:

Krok 2: Zaškrtněte políčko na stránce profilu uživatelů

První věcí, kterou musíme udělat, je přidat zaškrtávací políčko na každou stránku vydání profilu uživatele. Po zaškrtnutí tohoto políčka se uloží možnost meta uživatele, která bude označovat, že uživatel již nemá povoleno přihlásit se na váš web.

Zde je kód:

/ **
* Admin init
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_admin_init () {

// Upravit uživatelský 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 jednoduše vytváří volání funkce, kterou nyní musíme vytvořit. Tato funkce přidá zaškrtávací políčko na stránku profilu uživatelů.

/ **
* Přidá vlastní zaškrtávací políčko na stránku vydání uživatele
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_edit_user_profile () {
if (! current_user_can ('edit_users'))) {
vrátit se;
}

global $ user_id;

// Uživatel se nemůže sám zakázat
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
vrátit se;
}

// Zkontrolujte, zda je povoleno
$ checked = checked (get_user_option ('rc_banned', $ user_id, false));

// Zaškrtávací políčko Zobrazit
ozvěna
Zakázat uživatele
'; }

Nyní musíme mít funkci, která uloží do databáze hodnotu zaškrtávacího políčka:

/ **
* Uložit vlastní zaškrtávací políčko
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_edit_user_profile_update () {

if (! current_user_can ('edit_users'))) {
vrátit se;
}

global $ user_id;

// Uživatel se nemůže sám zakázat
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
vrátit se;
}

// Zámek
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Odemknout
rc_unban_user ($ user_id);
}

}

Jak vidíte, tato nová funkce používá dvě další funkce: rc_ban_users () a rc_unban_users (). Jejich jména jsou dosti explicitní, první z nich uloží do databáze skutečnost, že uživatel je zákaz, druhý odemkne uživatele.

Krok 3: Zákaz uživatelů

Nyní je čas vytvořit funkci rc_ban_users (). V této funkci musíme zkontrolovat, zda je již hodnota uložena a pokud ne, musíme ji uložit. To je důvod, proč volám funkci, kterou popíšu později: rc_is_user_banned ():

/ **
* Zakázat uživatele
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

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

Krok 4: Zrušte zákaz uživatelů

Následující funkce je opakem funkce, kterou jsme právě vytvořili: Musíme dát uživatelům možnost „nezakázat“:

/ **
* Zrušte zákaz uživatele
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Aktualizovat status
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Krok 5: Je uživatel zakázán?

V rc_ban_users () a rc_unban_users () jsme viděli, že pomocí funkce zvané rc_is_user_banned () kontrolujeme, zda je uživatel zakázán nebo ne. Vytvořme to:

/ **
* Zkontroluje, zda je uživatel již zakázán
*
* @access public
* @ od 1.0
* @return neplatné
* /
funkce rc_is_user_banned ($ user_id) {
návrat get_user_option ('rc_banned', $ user_id, false);
}

Tato funkce v podstatě jednoduše vrátí hodnotu možnosti uložené v rc_ban_users ().

V současné době máme na stránce vydání uživatele nové zaškrtávací políčko, které by se vám mělo líbit:

ban_users_1

Posledním krokem je připojení funkce k přihlašovacímu formuláři, aby se zabránilo zakázaným uživatelům přihlašovat se.

Krok 5: Vyhněte se uživatelům, kterým je zakázáno přihlášení

K tomu je třeba použít výchozí filtr WordPress s názvem „wp_authenticate_user“. K tomuto filtru připojíme funkci nazvanou „rc_authenticate_user ()“. Tato funkce bude používat WP_Error třída.

/ **
* Zkontrolujte, zda je uživatel uzamčen během procesu přihlášení
*
* @access public
* @ od 1.0
* @return neplatné
* /
function rc_authenticate_user ($ user) {

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

// Návratová chyba, pokud je uživatelský účet zakázán
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ banned) {
vrátit nové WP_Error ('rc_banned', __ ('CHYBA: Tento uživatelský účet je deaktivován. ',' Rc '));
}

návrat $ user;
}

Nyní stačí přidat filtr:

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

Závěr

Vytvořili jsme plugin, který přidá zaškrtávací políčko na stránku vydání uživatelského profilu. Použili jsme druhou funkci k uložení hodnoty do zaškrtávacího políčka a vytvořili jsme funkci pro zákaz uživatele WordPress a další pro odemčení uživatele. Také jsme vytvořili malou funkci, abychom zkontrolovali, zda je uživatel zakázán nebo ne. A nakonec jsme připojili funkci k filtru „wp_authenticate_user“ pomocí výchozí třídy WP_Error WordPress.

Pokud se vám tento tutoriál líbil, zamilujete si prémiovou verzi tohoto pluginu: Users Access Manager.

Stáhněte si celý kód na Githubu

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