Skonfigurowałem witrynę WordPress dla klienta. Klient pełni rolę edytora, jednak zainstalowałem wtyczkę Members i dałem klientowi możliwość dodawania nowych użytkowników do administratora WP. To działa dobrze.
Mam pytanie, czy chciałbym, aby klient miał możliwość tworzenia nowego użytkownika, podobnie jak w roli współautora, subskrybenta, redaktora i autora, ale NIE administratora. Nowi użytkownicy tworzeni przez klienta nie powinni mieć roli administratora. Czy można jakoś ukryć tę opcję?
Dzięki Vayu
Odpowiedzi:
To jest naprawdę dość łatwe. Musisz przefiltrować
map_meta_caps
i powstrzymać redaktorów przed tworzeniem / edytowaniem administratorów i usunąć rolę administratora z tablicy „edytowalnych ról”. Ta klasa, jako wtyczka lub plik funkcji w pliku theme.php, zrobiłaby to:EDYTOWAĆ
Ok, więc zastanowiłem się, dlaczego pozwalało to na usunięcie użytkownika. Wygląda na to, że delete_user jest obsługiwany nieco inaczej niż edit_user; Zmodyfikowałem metodę map_meta_cap, aby obejść ten problem. Testowałem na wersji 3.0.3, a to uniemożliwi faktyczne usuwanie, edytowanie lub tworzenie administratora przez osoby inne niż administratorzy.
EDYCJA 2
Zaktualizowałem kod, aby odzwierciedlał odpowiedź @ bugnumber9 poniżej. Proszę, odpowiedzcie pozytywnie!
źródło
Pomimo tego, że ma około 7 lat, ten wątek można łatwo przejrzeć i nadal zapewnia działające rozwiązanie. Mam na myśli kod dostarczony przez @John P Bloch.
To powiedziawszy, w PHP 7 powoduje błąd niekrytyczny (PHP przestarzałe) w następujący sposób:
Aby to naprawić, po prostu wymień ten kawałek:
z tym:
To rozwiąże problem.
źródło
Szukałem rozwiązania, w którym edytor mógłby edytować tylko menu ORAZ tworzyć / edytować użytkowników bez potrzeby używania wtyczki. Więc skończyło się na tym, że są zainteresowani.
źródło
@John P Rozwiązanie Blochsa nadal działa dobrze, ale pomyślałem, że wrzucę również mój mały filtr dla 'map_meta_cap'. Tylko trochę krótszy i czystszy, przynajmniej dla moich oczu;)
źródło