Theo tôi hiểu, nó có thể đã thay đổi qua nhiều năm, nhưng bây giờ thì không 'wp_capabilities'
. Tôi đã xem xét các tệp WP cốt lõi, cách chúng thực hiện bây giờ và tìm ra giải pháp mới cho vấn đề này. Đây là mã tôi sử dụng bây giờ:
global $wpdb;
$cap = get_user_meta( $wp_user_id, $wpdb->get_blog_prefix() . 'capabilities', true );
$cap
sau đó đến như một mảng kết hợp, ví dụ:
{
"administrator": true
}
hoặc là
{
"subscriber": true
}
Vì vậy, trong trường hợp của bạn, có lẽ bạn nên lấy các khóa của mảng:
$caps_array = array_keys( $cap );
và sau đó nhận được mọi thứ từ nó. Tôi cần xem người dùng có vai trò quản trị viên hay không, vì vậy tôi đã kiểm tra:
if ( is_array( $cap ) && !empty( $cap['administrator'] ) ) { return true; }
Tôi đã có một ID người dùng, không phải toàn bộ WP_User
đối tượng và tôi không muốn sử dụng bất kỳ giải pháp nào sẽ tạo ra user
đối tượng. Khi tôi đã kiểm tra, hãy get_user_meta
đi thẳng tới db để kiểm tra tham số chính xác này, vì vậy đây sẽ là con đường nhanh nhất và thông minh về tài nguyên.