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_User
obiekt, i nie chciałem używać żadnego rozwiązania, które stworzy user
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.