Jak zablokować użytkownika WordPress

Kilka dni temu zostałem poproszony o utworzenie systemu, który zabroniłby użytkownikowi WordPress instalacji. Stworzyłem więc prostą wtyczkę i chciałem podzielić się z Wami podstawami tej wtyczki. W tym samouczku omówimy filtry WordPress, akcje, zarządzanie kolumnami użytkowników i kilka innych wspaniałych rzeczy.


Krok 1: Utwórz wtyczkę

Ponownie, tutaj jest to bardzo skomplikowane, wszystko co musisz zrobić, to utworzyć nowy folder z „wp-content / plugins” o nazwie „ban-users”. W tym folderze utwórz nowy plik o nazwie „ban-users.php”, otwórz go i wklej ten kod:

Krok 2: Dodaj pole wyboru na stronie profilu użytkownika

Pierwszą rzeczą, którą musimy zrobić, to dodać pole wyboru na każdej stronie edycji profilu użytkownika. Gdy zaznaczysz to pole wyboru, będzie przechowywać meta użytkownika, która wskaże, że użytkownik nie może już logować się do Twojej witryny.

Oto kod:

/ **
* Admin init
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_admin_init () {

// Edytuj profil użytkownika
działanie dodatkowe („edit_user_profile”, „rc_edit_user_profile”);
działanie dodatkowe („edit_user_profile_update”, „rc_edit_user_profile_update”);

}
add Działalności („admin_init”, „rc_admin_init”);

Ten kod po prostu tworzy wywołanie funkcji, którą musimy teraz utworzyć. Ta funkcja doda pole wyboru do strony profilu użytkownika.

/ **
* Dodaje niestandardowe pole wyboru do strony edycji użytkownika
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
powrót;
}

globalny $ user_id;

// Użytkownik nie może sam się wyłączyć
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
powrót;
}

// Sprawdź, czy jest włączony
$ sprawdzone = zaznaczone (get_user_option ('rc_banned', $ user_id, false));

// Wyświetl pole wyboru
Echo '
Zablokuj użytkownika
„; }

Musimy teraz mieć funkcję, która zapisze w bazie danych wartość pola wyboru:

/ **
* Zapisz niestandardowe pole wyboru
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
powrót;
}

globalny $ user_id;

// Użytkownik nie może sam się wyłączyć
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
powrót;
}

// Zamek
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} else {// Odblokuj
rc_unban_user ($ user_id);
}

}

Jak widać, ta nowa funkcja wykorzystuje dwie inne funkcje: rc_ban_users () i rc_unban_users (). Ich nazwy są dość wyraźne, pierwszy zapisuje w bazie danych fakt, że użytkownik jest zablokowany, drugi odblokuje użytkowników.

Krok 3: Zablokuj użytkowników

Czas utworzyć funkcję rc_ban_users (). W tej funkcji musimy sprawdzić, czy wartość jest już zapisana, a jeśli nie, musimy ją zapisać. Właśnie dlatego wywołuję funkcję, którą opiszę później: rc_is_user_banned ():

/ **
* Zablokuj użytkownika
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

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

Krok 4: Odblokuj użytkowników

Następująca funkcja jest odwrotna do tej, którą właśnie stworzyliśmy: musimy dać możliwość „odblokowania” użytkowników:

/ **
* Odblokuj użytkownika
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Status aktualizacji
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Krok 5: Czy użytkownik został zbanowany??

W rc_ban_users () i rc_unban_users () widzieliśmy, że używamy funkcji o nazwie rc_is_user_banned (), aby sprawdzić, czy użytkownik jest zbanowany, czy nie. Stwórzmy to:

/ **
* Sprawdza, czy użytkownik jest już zbanowany
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Zasadniczo ta funkcja po prostu zwraca wartość opcji zapisanej w rc_ban_users ().

W tej chwili mamy nowe pole wyboru na stronie edycji użytkownika, które powinno tak:

ban_users_1

Ostatnim krokiem jest podpięcie funkcji do formularza logowania, aby uniknąć zablokowanych użytkowników do logowania.

Krok 5: Unikaj zablokowanych użytkowników, aby się zalogować

Aby to zrobić, musimy użyć domyślnego filtru WordPress o nazwie „wp_authenticate_user”. Do tego filtra podpiszemy funkcję o nazwie „rc_authenticate_user ()”. Ta funkcja korzysta z Klasa WP_Error.

/ **
* Sprawdź, czy użytkownik jest zablokowany podczas procesu logowania
*
* @dostęp publiczny
* @ od wersji 1.0
* @render void
* /
funkcja rc_authenticate_user ($ user) {

if (is_wp_error ($ user)) {
zwróć $ user;
}

// Zwróć błąd, jeśli konto użytkownika zostanie zablokowane
$ zbanowany = get_user_option ('rc_banned', $ user-> ID, false);
jeśli ($ zbanowany) {
zwróć nowy WP_Error ('rc_banned', __ ('BŁĄD: To konto użytkownika jest wyłączone. ',' Rc '));
}

zwróć $ user;
}

Teraz musimy tylko dodać filtr:

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

Wniosek

Stworzyliśmy wtyczkę, która dodaje pole wyboru do strony edycji profilu użytkownika. Użyliśmy drugiej funkcji do przechowywania wartości w polu wyboru i tworzymy funkcję blokowania użytkownika WordPress, a drugą do odblokowania użytkownika. Stworzyliśmy również małą funkcję, aby sprawdzić, czy użytkownik jest zbanowany, czy nie. I w końcu podłączyliśmy funkcję do filtra „wp_authenticate_user”, używając domyślnej klasy WP_Error WordPress.

Jeśli spodobał Ci się ten samouczek, spodoba ci się wersja premium tej wtyczki: Users Access Manager.

Pobierz pełny kod 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