Muszę uzyskać rolę powiązaną z użytkownikiem - nie z „aktualnie zalogowanym użytkownikiem”.
Używam Buddypress (nie powinno to mieć znaczenia dla natury tego pytania) i jestem w bp_members()
pętli.
Jak mogę w dowolnym momencie odzyskać rolę użytkownika, którego zgłaszam w pętli?
Dzięki.
user-roles
frank13
źródło
źródło
Jeśli
bp_members
zwraca tablicęWP_User
obiektów, każdy powinien mieć właściwośćroles
zawierającą tablicę ról użytkowników.W przeciwnym razie możesz użyć
get_user_meta
kluczawp_capabilities
, który zwróci tablicęrole => capability
par:źródło
$user->ID
roli. Tylko jedna rola, ponieważ żaden użytkownik w naszym systemie nie ma przypisanej więcej niż 1 roli.$roles[0]
, gotowy.Jak rozumiem, prawdopodobnie zmieniło się to przez lata, teraz już nie jest
'wp_capabilities'
. Spojrzałem na podstawowe pliki WP, jak to robią teraz i znalazłem nowe rozwiązanie tego problemu. Oto kod, którego teraz używam:$cap
następnie pojawia się jako tablica asocjacyjna, na przykład:lub
Więc w twoim przypadku prawdopodobnie powinieneś zdobyć klucze tablicy:
a następnie wyciągnij z niego wszystko. Musiałem sprawdzić, czy użytkownik ma rolę administratora, więc sprawdziłem:
Miałem identyfikator użytkownika, a nie cały
WP_User
obiekt, i nie chciałem używać żadnego rozwiązania, które stworzyuser
obiekt. Jak sprawdziłem,get_user_meta
idzie prosto do db, aby sprawdzić ten dokładny parametr, więc powinna to być najszybsza i zasobooszczędna trasa.źródło