워드프레스에서 사용자가 자신의 미디어 파일만 접근하도록 제한하기

Last Updated: 2023년 08월 06일 댓글

워드프레스에서 여러 글쓴이 권한을 가진 사용자가 있는 경우 모든 미디어 파일을 볼 수 있게 됩니다. 심지어 관리자와 편집자(Editor)가 올린 미디어 파일까지 접근이 가능하게 됩니다.

사용자에게 자신이 올린 미디어 파일만 표시되도록 하고 싶은 경우가 있을 수 있습니다. 그런 경우 두 가지 방법이 있습니다.

플러그인을 사용하여 사용자가 자신의 미디어에만 접근하도록 권한 제한하기

Restrict Media Library Access를 사용하면 글쓴이(Author)와 기여자(Contributor)가 자신이 올린 미디어 라이브러리만 볼 수 있도록 접근 권한을 제한할 수 있습니다.

이 플러그인은 두 가지의 주요 기능을 제공합니다.

  1. 미디어 라이브러리의 규모가 커질 때 글쓴이가 자신이 업로드한 파일을 쉽게 찾을 수 있도록 합니다.
  2. 다른 글쓴이가 올린 미디어 파일을 사용하거나 다운로드하는 것을 방지합니다.

코드를 사용하여 사용자의 미디어 접근 권한을 제한하기

플러그인을 사용하는 것이 쉬운 방법이지만, 플러그인 사용이 꺼려진다면 다음과 같은 코드를 사용할 수 있습니다. (플러그인 개수는 가능한 한 최소화하는 것이 바람직합니다.)

// 미디어 라이브러리 접근 제한하기

add_filter( 'ajax_query_attachments_args', 'wpb_show_current_user_attachments' );

function wpb_show_current_user_attachments( $query ) {
$user_id = get_current_user_id();
if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts
') ) {
$query['author'] = $user_id;
}
return $query;
}

위의 코드를 사용 중인 테마의 함수 파일에 추가하도록 합니다. 가급적이면 차일드 테마를 만들어서 작업하시기 바랍니다.

위의 코드가 원하는 대로 작동하지 않으면 다음 코드를 시도해볼 수 있습니다.

/**
* Allow access to own content only, 자신의 콘텐츠에만 접근하도록 허용
*/
function my_authored_content($query) {

//get current user info to see if they are allowed to access ANY posts and pages
$current_user = wp_get_current_user();
// set current user to $is_user
$is_user = $current_user->user_login;

//if is admin or 'is_user' does not equal #username
if (!current_user_can('manage_options')){
//if in the admin panel
if($query->is_admin) {

global $user_ID;
$query->set('author', $user_ID);

}
return $query;
}
return $query;
}
add_filter('pre_get_posts', 'my_authored_content');
// 출처: freewebmentor.com

참고:


댓글 남기기

Leave a Comment