Следующее сделает «что-то», если пользователь является администратором.
<?php if (($is_admin)) : ?> do something <?php endif; ?>
Как я могу изменить это, так что «что-то» произойдет, если пользователь будет администратором или имеет определенную роль? благодаря
Роли хранятся в $user->roles
. Чтобы проверить «если пользователь является администратором или имеет определенную роль», вы можете просто:
if ($is_admin || in_array('some_role', $user->roles)):
Для проверки того, принадлежит ли пользователь одной или нескольким ролям, вы можете:
global $user; $allowed_roles = array('customer', 'administrator'); if(count(array_intersect($user->roles, $allowed_roles)) > 0){ // do something useful here }
function user_has_role($roles) { return !!count(array_intersect(is_array($roles)? $roles : array($roles), array_values($GLOBALS['user']->roles))); }
используя эту функцию, вы можете проверить, имеет ли пользователь одну или несколько роли. хотя это может быть полезно в качестве значения «обратного вызова доступа»