W jaki sposób ograniczamy dostęp do obszaru administracyjnego WP wszystkim użytkownikom z wyjątkiem administratorów?
Użytkownicy naszej witryny mają własne strony profilowe, które wykonują wszystkie potrzebne im funkcje.
Więc admin powinien być niedostępny dla wszystkich oprócz adminów.
Jak to zrobić?
Odpowiedzi:
Możemy podpiąć się do
admin_init
akcji i sprawdzić, czy użytkownik jest administratorem, używająccurrent_user_can()
funkcji, aby sprawdzić, czymanage_options
może to zrobić bieżący użytkownik , co może zrobić tylko administrator.Ten kod po wklejeniu do pliku functions.php wyświetli komunikat, gdy nie-administrator spróbuje uzyskać dostęp do pulpitu nawigacyjnego:
Jeśli wolisz, możesz zapewnić lepszą obsługę, przekierowując użytkownika na stronę główną:
Jeśli chcesz przekierować użytkownika na stronę jego profilu, zastąp
home_url()
powyższy kod linkiem.źródło
manage_options
zdolności @cybmeta jest akceptowanym sposobem sprawdzania użytkownika administratora. Nawet Mark Jaquith tak mówimanage_options
jest to coś, co mogą zrobić tylko „administratorzy”, a to nieprawda,manage_options
jest to zdolność, którą można usunąć z roli administratora lub przypisać innym rolom użytkownika. Ważne jest, aby wiedzieć, co chcesz zrobić i wybrać najlepszy sposób. Zobacz moją odpowiedź, wyjaśniam to.manage_options
zmanage_network
. Ten ostatni wyłączyłby pulpit także dla domyślnych „administratorów strony”, ale pozostawiłby dostęp do superadministratorów (administratorów sieci).Możesz napisać wtyczkę i podłączyć się do niej
admin_init
.Kodeks faktycznie podaje przykład funkcji, której szukasz.
http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init#Example:_Access_control
źródło
Niektóre z udzielonych odpowiedzi mogą być w większości przypadków w porządku, ale myślę, że żadna z nich nie gwarantuje dokładnie tego, o co proszono, ponieważ żadna z odpowiedzi nie sprawdza ról użytkownika, sprawdza możliwości i możliwości, które można przypisać i usunąć z ról. Aby dać dokładną odpowiedź, należy sprawdzić role użytkowników, a nie możliwości:
Jeśli chcesz sprawdzić, czy użytkownik ma funkcję „manage_options”, możesz to zrobić. W rzeczywistości jest to najlepsza opcja w większości przypadków. Chociaż ta funkcja jest domyślnie powiązana z użytkownikami administratora, można ją usunąć z roli administratora lub przypisać do innych ról użytkowników. Dlatego w większości przypadków sprawdzanie, co użytkownik może zrobić, a czego nie, jest lepsze niż sprawdzenie roli użytkownika. Tak więc w większości przypadków sprawdzanie możliwości powinno być wybranym sposobem, ale musisz jasno określić tę koncepcję i wybrać najlepszą opcję dla swojej sytuacji i celu:
źródło
Wypróbuj wtyczkę Adminimize .
Dzięki temu możesz całkiem dobrze zablokować sytuację.
Możesz także spróbować skonfigurować dostęp poprzez plik htaccess
źródło
źródło
'administrator'
nie jest zdolnością. Działa tylko w celu zachowania kompatybilności wstecznej. Sprawdź'update_core'
lub inne możliwości administracyjne.Umieść te linie w swoim
functions.php
źródło
Spróbuj tego, nigdy przez błędy w obliczu użytkownika końcowego. Przeciw dobrym UX. Ten kod przekierowuje je do strony głównej.
źródło
Chciałbym użyć WP Frontend i ustawić go dla wszystkich, którzy oczekują administratorów.
źródło