WordPressユーザーが自分のメディアファイルにのみアクセスするように制限する

Last Updated:2023年08月06日| | コメントを残す

WordPress複数ライターの権限を持つユーザーがいる場合、すべてのメディアファイルを表示することができます。 さらに、管理者や編集者(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

メモ:


コメントを残す

コメント