Мне нужно получить роль, связанную с пользователем, а не с «зарегистрированным пользователем».
Я использую Buddypress (не это должно иметь значение для характера этого вопроса), и я в bp_members()
курсе.
Как я могу получить роль пользователя, о котором я сообщаю в цикле в любой момент времени?
Благодарю.
user-roles
frank13
источник
источник
Если
bp_members
возвращает массивWP_User
объектов, у каждого должно быть свойство,roles
которое содержит массив ролей пользователей.В противном случае вы можете использовать
get_user_meta
для ключаwp_capabilities
, который будет возвращать массивrole => capability
пар:источник
$user->ID
роль. Только одна роль, так как никому из пользователей в нашей системе не назначено более одной роли.$roles[0]
, сделано.Как я понимаю, это, вероятно, изменилось за эти годы, теперь это не так
'wp_capabilities'
. Я посмотрел на основные файлы WP, как они это делают сейчас, и нашел новое решение для этого. Вот код, который я сейчас использую:$cap
затем приходит как ассоциативный массив, например:или
Так что в вашем случае вы, вероятно, должны получить ключи массива:
а затем получить все от этого. Мне нужно было проверить, есть ли у пользователя роль администратора, поэтому я проверил:
У меня был идентификатор пользователя, а не весь
WP_User
объект, и я не хотел использовать какое-либо решение для созданияuser
объекта. Как я проверял,get_user_meta
идет прямо в базу данных, чтобы проверить этот точный параметр, так что это должен быть самый быстрый и ресурсоемкий маршрут.источник