Как я понимаю, это, вероятно, изменилось за эти годы, теперь это не так 'wp_capabilities'
. Я посмотрел на основные файлы WP, как они это делают сейчас, и нашел новое решение для этого. Вот код, который я сейчас использую:
global $wpdb;
$cap = get_user_meta( $wp_user_id, $wpdb->get_blog_prefix() . 'capabilities', true );
$cap
затем приходит как ассоциативный массив, например:
{
"administrator": true
}
или
{
"subscriber": true
}
Так что в вашем случае вы, вероятно, должны получить ключи массива:
$caps_array = array_keys( $cap );
а затем получить все от этого. Мне нужно было проверить, есть ли у пользователя роль администратора, поэтому я проверил:
if ( is_array( $cap ) && !empty( $cap['administrator'] ) ) { return true; }
У меня был идентификатор пользователя, а не весь WP_User
объект, и я не хотел использовать какое-либо решение для создания user
объекта. Как я проверял, get_user_meta
идет прямо в базу данных, чтобы проверить этот точный параметр, так что это должен быть самый быстрый и ресурсоемкий маршрут.