user_can() WP 3.1.0

Перевіряє можливості вказаного користувача, здійснювати вказану дію.

Функція дуже схожа на 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 об’єкта та зазначеного мета права, перетворює це мета право на примітивне право, а потім це примітивне право порівнюється зі списком прав користувача (включаючи список прав його ролі).

Приклади

0

#1 Перевіримо чи є користувач 3 Адміністратором

$user_id = 3;
if( user_can( $user_id, 'manage_options' ) ){
	// код
}
0

#2 Перевіримо, чи може поточний користувач видаляти пости

Це є прикладом перевірки примітивного права.

global $user_ID;
if( ! user_can( $user_ID, 'delete_posts' ) ){
	echo "У вас немає права видаляти пости!";
}
0

#3 Перевіримо, чи може вказаний користувач з ID 141 змінити пост з ID 1

Це приклад перевірки мета права.

if( user_can( 141, 'edit_post', 1 ) ){
	echo 'Ви можете редагувати цей пост';
}

список змін

З версії 3.1.0Введено.
З версії 5.3.0Formalizated 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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *