メディア一覧の表示をそのユーザーがアップロードしたものに限定する

メディア一覧の表示をそのユーザーがアップロードしたものに限定する
このページについて
いろいろな人が投稿するサイトをWordPressで作成する時にちょっと困るのが、すべてのユーザーがアップロードした画像やファイルが使用できてしまうこと。簡単なコードを追加することで特定権限までのユーザーには自身のメディアのみ使用可能にする方法を紹介します。

複数のユーザーが投稿するようなサイトをWordPressで構築する際に問題となるのが、他のユーザーがアップロードした画像やファイルもすべてのユーザーのメディア一覧へ表示され、使用できてしまうこと。

これを、特定のユーザー権限までのユーザーに限って、自身のアップロードしたものだけがメディア一覧へ表示され、使えるようにする機能が【HABONE】テーマにはあります。

比較的簡単なコードで実装できますので、会員の方に投稿してもらう機会があるようなサイトで実装してみてはいかがでしょうか?

本記事を参考にWordPressサイトのカスタマイズをお考えの方へ

このカスタマイズ内容は、当サイトで配布している【HABONE BASE】テーマへ、上位バージョンの【HABONE】テーマの機能の一部を追加するための参考記事です。

テーマによってプログラムの書き方や構成が異なりますし、デザイン要素も異なりますので、特に【HABONE BASE】以外のテーマへの適用を行う場合には、以下のスキルが必要となります。

  • カスタマイズで不具合が発生した場合にご自身で復旧が可能なこと
  • FTPクライアントツールやサーバーのファイルマネージャーなどを使ってファイルの転送などが行えること
  • テーマファイルの編集を行った経験があること
  • ご自身でデザインの修正や調整ができること

また、【HABONE BASE】へ追加する場合には、子テーマでのカスタマイズをおすすめします。

そのユーザーがアップロードした画像やファイルのみを使えるようにする方法

このカスタマイズは、子テーマのfunctions.phpへ以下のコードを追加して実装します。

/***** 投稿者権限までのユーザーは自身のメディアのみ表示 *****/
function habone_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;
}

add_filter( 'ajax_query_attachments_args', 'habone_show_current_user_attachments' );

上記コードでは、投稿することのできる「寄稿者」「投稿者」権限のユーザーに対して、自身がアップロードしたもののみを表示・使用できるようにするもので、他者の投稿を編集できる「編集者」「管理者」権限には影響しません。

コードを追加したら、テスト的に「寄稿者」や「投稿者」権限のユーザーを作成し、実際に機能するかを試してください。

限定するユーザー権限については、current_user_can関数を使って、「プラグインを有効化できる人(管理者)」「他者の投稿を編集できる人(編集者)」を除くユーザーに対してという条件分岐をしています。権限については「current_user_can」でお調べいただければと思います。

なお、このコードによって、フロントエンドから何かを投稿できるようなプラグインでも機能するかどうかについてはテストしていません


本機能は以下の記事を参考に【HABONE】テーマへ実装し、有効/無効のスイッチを設けました。

参考:How to Restrict Media Library Access to User’s Own Uploads in WordPress

サイトへの支援をお願いします

最後までお読みいただきありがとうございました。本記事の内容がお役に立てましたら幸いです。
今後もよりよい情報を提供し続けることができるよう、投げ銭によるサイトへの支援、およびSNSによる拡散をお願いします

作者:

WordPress用テーマ「ha-Basic」「HABONE」の開発、プラグインやテーマの翻訳、WordPressの使い方やカスタマイズ方法などの情報を配信しています。

年齢:40代 趣味/園芸・ペット・卓球