워드프레스 사용자 역할 체크하기 (자체 정리용)

워드프레스 정보를 제공하는 블로그 Avada 2019. 6. 1. 00:00 • 댓글:

현재 사용자가 특정 역할(Role)인지를 체크하고 싶은 경우 다음 함수를 테마의 함수 파일에 추가하면 된다.

function check_user_role($roles, $user_id = null) {
 if ($user_id) $user = get_userdata($user_id);
 else $user = wp_get_current_user();
 if (empty($user)) return false;
 foreach ($user->roles as $role) {
  if (in_array($role, $roles)) {
   return true;
  }
 }
 return false;
}

그러면 다음과 같이 사용할 수 있다.

if (check_user_role(array('author','editor','custom_role'))) {
 // 수행할 작업
}

역할의 권한을 사용하여 사용자 체크하기:

현재 사용자가 관리자 권한을 가진 경우:

if ( current_user_can( 'manage_options' ) ) {
}

현재 사용자가 편집자 이상(편집자, 관리자)인 경우:

if ( current_user_can( 'delete_others_posts' ) ) {
}

현재 사용자가 글쓴이 이상(글쓴이, 편집자, 관리자)인 경우:

if ( current_user_can( 'publish_posts' ) ) {
}

현재 사용자가 기여자(Contributor) 이상(기여자, 글쓴이, 편집자, 관리자)인 경우:

if ( current_user_can( 'delete_posts' ) ) {
}

current_user_can('administrator')과 같이 current_user_can 함수를 사용할 수 있지만, 권장되지 않음.

대신 다음과 같은 형식으로 사용 가능:

$user = wp_get_current_user();
$allowed_roles = array('administrator','editor');
if(array_intersect($allowed_roles, $user->roles)){
    //user have $allowed_roles
}

워드프레스 역할(Role)과 권한:

참고: