Як я розумію, це, мабуть, змінилося з роками, зараз це не так '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
прямує до db, щоб перевірити наявність цього точного параметра, тож це має бути найшвидший та ресурсний ресурс.