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:
global $wpdb;
$cap = get_user_meta( $wp_user_id, $wpdb->get_blog_prefix() . 'capabilities', true );
$cap następnie pojawia się jako tablica asocjacyjna, na przykład:
{
"administrator": true
}
lub
{
"subscriber": true
}
Więc w twoim przypadku prawdopodobnie powinieneś zdobyć klucze tablicy:
$caps_array = array_keys( $cap );
a następnie wyciągnij z niego wszystko. Musiałem sprawdzić, czy użytkownik ma rolę administratora, więc sprawdziłem:
if ( is_array( $cap ) && !empty( $cap['administrator'] ) ) { return true; }
Miałem identyfikator użytkownika, a nie cały WP_Userobiekt, i nie chciałem używać żadnego rozwiązania, które stworzy userobiekt. Jak sprawdziłem, get_user_metaidzie prosto do db, aby sprawdzić ten dokładny parametr, więc powinna to być najszybsza i zasobooszczędna trasa.