Jestem prawie pewien, że rozumiem ustawienia ról i możliwości w WordPress: szczegółowe możliwości, pogrupowane w role, które można przypisać użytkownikom. Kod powinien sprawdzać szczegółowe możliwości, a nie role (ponieważ możliwości poszczególnych ról mogą się zmieniać). Role niekoniecznie są hierarchiczne (choć role domyślne).
Czy istnieje jakiś sposób przypisywania wielu ról użytkownikom? Alternatywnie, mając wiele grup możliwości i kojarząc jedną lub więcej grup z użytkownikiem? Sposób działania mojej witryny wiąże się z pewnymi oczywistymi obowiązkami: aktualizowaniem stron internetowych, moderowaniem forów, aktualizowaniem kalendarza wydarzeń i tak dalej. Każda odpowiedzialność ma grupę możliwości niezbędnych do wykonywania związanych z nią zadań. Chciałbym umożliwić użytkownikowi wykonywanie jednego lub więcej obowiązków. Tak więc użytkownik A może aktualizować strony internetowe i kalendarz wydarzeń, ale nie moderować forów (co nie jest wystarczająco taktowne), ale użytkownik B może moderować fora, aktualizować kalendarz wydarzeń, ale nie jest dozwolony w pobliżu stron internetowych.
Czy istnieje jakiś sposób, by nie zdefiniować roli dla każdej możliwej kombinacji obowiązków?
źródło
Odpowiedzi:
Brak wielu ról irytował mnie od dawna, ponieważ bazowa klasa WP_User obsługuje wiele ról. Rozważałem nawet znalezienie alternatywnego rozwiązania programowego. @lpryor - po przeczytaniu twojego posta zmotywowałem go do samodzielnego wdrożenia.
Zajęło mi to zaskakująco mało wierszy, chociaż musiałem zhakować plik users.php, ponieważ byłem zbyt leniwy, aby stworzyć osobną wtyczkę, aby to dla mnie zrobić. Oczywiście jest to zły sposób, aby to zrobić, więc jeśli będę wystarczająco zmotywowany w przyszłości, mogę spróbować zrobić to właściwie.
Jeśli nie obchodzi Cię możliwość uaktualnienia do najnowszej wersji Wordpress (co powinieneś) - możesz zaimplementować wiele ról za pomocą poniższych fragmentów kodu. Pamiętaj, że nie jestem ekspertem od wordpress. Właśnie otworzyłem odpowiednie pliki i wprowadziłem zmiany, nie próbując zrozumieć pełnych konsekwencji tego, co robiłem. Kod wydaje mi się rozsądny, ale nie ufałbym mu w moim życiu.
(Używam 3.2, więc numery linii mogą się różnić) W klasie-wp-users-list-table.php tuż przed linią 150 dodaj kilka takich:
następnie zmień funkcję current_account, aby wyglądała mniej więcej tak
}
Teraz w users.php Skomentuj linie 71-76
Zamień set_role w linii 83 na add_role
W wierszu 92 dodaj: (To tylko lekko edytowana kopia i wklej z akcji promowania - nie sprawdziłem, czy funkcja promot_user jest odpowiednia do usuwania ról)
W wierszu 370 dodaj:
źródło
Wtyczka User Role Editor obsługuje wiele ról dla użytkownika.
Po zainstalowaniu Użytkownicy> pod każdym użytkownikiem ma opcję Możliwości. URE traktuje pierwszą rolę WP jako „rolę podstawową” i umożliwia dodawanie „innych ról”.
źródło
Używam wtyczki Members wraz z niestandardowymi możliwościami tworzenia.
Nie możesz przypisać kilku ról do jednej osoby, ale możesz utworzyć dowolne role i określić, jakie możliwości ma ta rola.
W tempaltes możesz użyć czegoś takiego jak current_user_can () .
źródło