WordPress のメディア表示をアップロードしたユーザーのみに限定する

WordPress で、サイトによっては、自分のアップロードした画像しか利用させたくない場合などもありますよね。
そんなときでも、ちょこっとカスタマイズするだけで、メディアライブラリで表示されるものを制限できることができてしまいます。

CODE 1

/*
 * メディアの抽出条件にログインユーザーの絞り込み条件を追加する
 */
function display_only_self_uploaded_medias( $wp_query ) {
	global $userdata;
	if ( is_admin() && $wp_query->is_main_query() && $wp_query->get( 'post_type' ) == 'attachment' ) {
		$wp_query->set( 'author', $userdata->ID );
	}
}
add_action( 'pre_get_posts', 'display_only_self_uploaded_medias' );

CODE 1 を functions.php などに追加するだけで、

コード追加前のメディア一覧表示
コード追加後のメディア一覧表示

この通り!自分がアップロードしたメディアのみが表示されるようになります。

このコードだと、管理者も含め全員が絞り込まれてしまいますが、 current_user_can などの条件分岐関数を用いれば、ユーザーの権限によって、絞り込みを行うかどうかの変更なども可能ですよ。

ATTENTION

ただし、これだけだと完全ではなくて、細かいところで、メディアの数や、メディアページにおいての年月での絞り込みのプルダウンメニューについても表示の変更をしたいところです。
調べてみたところ、これらの項目の表示には、フックが存在していないため、残念なことに簡単に修正することができず、かなり大がかり(やるとなれば該当部分の処理を別実装で差し替えるなどが必要です。)な処理が必要そうです。(CSSで非表示にしちゃう荒技もありますけどね。)

「WordPress のメディア表示をアップロードしたユーザーのみに限定する」への5件のフィードバック

  1. 初めてコメントをさせていただきます。
    「WordPress のメディア表示をアップロードしたユーザーのみに限定する」を拝見し、早速CODE 1 を functions.phpに追加したところ、
    add_action( ‘pre_get_posts’, ‘display_only_self_uploaded_medias’ );
    の部分に関して
    Fatal error: Call to undefined function add_action() in~と表示され、うまくいきません。
    恐れ入りますが、何が原因かをご推測されましたら、何卒ご教示いただければ幸いです。

  2. お世話になります。昨日の問題解決しました。wp-includes/functions.phpに追加したために問題が生じただけでした。テーマのfunctions.phpに追加したところ全てうまくいきました。とても重宝します。ありがとうございます。

  3. こんにちは。友人と複数人で運営するサイトにて、こちらの記事を参考に表示制限をかけました。
    が、wordpressを3.5.1にアップデートしたところ
    管理画面のメディアライブラリでは表示制限出来ているのですが、投稿画面のメディアライブラリでは全て表示されてしまいます。
    3.5からメディアアップローダーが変わったらしく、それが原因かと思うのですが、また投稿画面でも制限をかける方法は無いものでしょうか?

  4. 邑里さんと同じ問題で悩んでいます。

    打開策はありますか??

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です