WordPressで画像をアップロードする際、デフォルトの状態ではメディアライブラリで他の人がアップロードした画像も参照することができます。
問題があるというわけではないと思いますが、複数人でブログを運営する時に、他の人がアップロードした画像は見せたくないというケースも出てくると思います。
そこで今回は、メディアライブラリで他の人がアップロードした画像を参照できないようにする方法を紹介したいと思います。
他のユーザーがアップロードした画像を参照できないようにする方法
他の人がアップロードした画像を参照できないようにするためには、functions.phpに以下のコードを追加します。
function display_only_self_uploaded_medias( $wp_query ) {
if ( is_admin() && ( $wp_query->is_main_query() || ( defined( 'DOING_QUERY_ATTACHMENT' ) && DOING_QUERY_ATTACHMENT ) ) && $wp_query->get( 'post_type' ) == 'attachment' ) {
$user = wp_get_current_user();
$wp_query->set( 'author', $user->ID );
}
}
function define_doing_query_attachment_const() {
if ( ! defined( 'DOING_QUERY_ATTACHMENT' ) ) {
define( 'DOING_QUERY_ATTACHMENT', true );
}
}
get_currentuserinfo();
if($current_user->user_level < 10){
add_action( 'pre_get_posts', 'display_only_self_uploaded_medias' );
add_action( 'wp_ajax_query-attachments', 'define_doing_query_attachment_const', 0 );
}
これで、自分がアップロードした画像やファイルしか参照できないようになります。
なお、管理者は例外で、すべての画像・ファイルを参照することができます。
※2015/11/15追記
Simple Colorsさんで、WordPress3.7以降では以下の方法が推奨されていました。この方がシンプルになっていいですね。
Simple Colorsさんで、WordPress3.7以降では以下の方法が推奨されていました。この方がシンプルになっていいですね。
function display_only_self_uploaded_medias( $query ) {
if ( $user = wp_get_current_user() ) {
$query['author'] = $user->ID;
}
return $query;
}
add_action( 'ajax_query_attachments_args', 'display_only_self_uploaded_medias' );
あとがき
自分がアップロードした画像のみが参照できる方が、記事の投稿がやりやすくなるかもしれませんね。
複数人でブログを運営する際は、ぜひ参考にしていただければと思います。

