こんにちは。づやです。
WordPressのメディアライブラリって便利ですよね。
デフォルトだと投稿者以上の権限の人が使える画像をアップしたりできるあの機能です。
ただこの機能、他のアカウントがアップした画像とかも一覧にでてきちゃうんですよね。さすがに他人がアップした物は削除はできないのですが、一覧に出したり使用したりは可能です。
場合にもよるんですが、管理者(編集者もかな?)以外は自分のアップしたファイルだけ見れれば十分な気がします。自分がアップした画像を他の人に見られたくないことも。
それで、なんとかしようと思ってコードを追ってみたんですが、いまいちGoodなフックがありません。
絶対あると思うんですが。(´・ω・`)
とりあえず、query_stringで力技でなんとかしてみました。
//functions.phpにでも書いておく
add_filter('query_string', "set_media_query");
function set_media_query($query_string){
global $pagenow,$current_user; // media-upload.php 、upload.php
// メディアライブラリ系の処理以外は何もしない
if($pagenow != 'media-upload.php' && $pagenow != 'upload.php') {
return $query_string;
}
get_currentuserinfo();
// 編集者以上だったら何もしない
if($current_user->user_level >= 5) {
return $query_string;
}
wp_parse_str($query_string, $qv);
// メディア以外のqueryの場合も何もしない
if($qv['post_type'] != 'attachment') {
return $query_string;
}
// 条件に自分の画像を追加
$add_query_string = array(
'author' => $current_user->ID
);
$new_query_vars = array_merge($add_query_string,$qv);
$query_var = array();
foreach ($new_query_vars as $key => $value) {
$query_var[] = $key.'='.$value;
}
return join('&', $query_var);
}
こうすると
こんな感じになりました。
ちなみに管理者はちゃんと全部見れます。実はどこかの設定で出来る気もするので、調べておきますね。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。