user_can()
Перевіряє можливості вказаного користувача, здійснювати вказану дію.
Функція дуже схожа на current_user_can() , відрізняється тим, що їй потрібно вказувати перший параметр – ID/об’єкт користувача, можливість якого потрібно перевірити.
Замість конкретного права користувача, можна вказати назву його ролі для перевірки. Але така практика не рекомендується, тому що в деяких випадках така перевірка на роль користувача може працювати неправильно!
Це функція обгортка для методу WP_User::has_cap() .
Також дивіться: функцію map_meta_cap .
WP_User::has_cap()
Хуків немає.
Повертає
true|false. true або false, залежно від того, чи є вказані можливості у користувача.
Використання
user_can($user, $capability, $object_id, ...);
-  $user
 (число/об’єкт) (обов’язковий)
- ID чи об’єкт користувача, права якого потрібно перевірити.
-  $capability
 (рядок) (обов’язковий)
-  Назва можливості чи ролі. Список можливостей та ролей
 дивіться тут .
-  $object_id, …
 (число)
- ID об’єкта (наприклад посту чи коменту) право якого потрібно перевірити. У цьому випадку в $capability потрібно вказувати назву мета права, а не примітивного права: наприклад, edit_post , а не edit_posts . - Про те, як працюють мета права читайте в описі map_meta_cap() , яка на основі переданого ID об’єкта та зазначеного мета права, перетворює це мета право на примітивне право, а потім це примітивне право порівнюється зі списком прав користувача (включаючи список прав його ролі). 
Приклади
#1 Перевіримо чи є користувач 3 Адміністратором
$user_id = 3;
if( user_can( $user_id, 'manage_options' ) ){
	// код
}#2 Перевіримо, чи може поточний користувач видаляти пости
Це є прикладом перевірки примітивного права.
global $user_ID;
if( ! user_can( $user_ID, 'delete_posts' ) ){
	echo "У вас немає права видаляти пости!";
}#3 Перевіримо, чи може вказаний користувач з ID 141 змінити пост з ID 1
Це приклад перевірки мета права.
if( user_can( 141, 'edit_post', 1 ) ){
	echo 'Ви можете редагувати цей пост';
}
список змін
| З версії 3.1.0 | Введено. | 
| З версії 5.3.0 | Formalizated existing and already documented …$args parameter by adding it до функції signature. | 
user can WP 6.0.2
function user_can( $user, $capability, ...$args ) { if ( ! is_object( $user ) ) { $ user = get_userdata ($ user); } if (empty($user)) { // User is logged out, створіть anonymous user object. $user = new WP_User( 0 ); $ user-> init (new stdClass); } return $user->has_cap( $capability, ...$args ); }