はじめに
複数ユーザーで運営していると、メディアライブラリがどんどん膨れ上がり、「誰がどのファイルをアップしたのか分からない」という状況になりがちです。
特に編集者や寄稿者が多いサイトでは、アップロード者ごとにメディアを絞り込める機能があると、管理効率が大幅に向上します。
この記事では、この方法について説明します。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
// 一覧にフィルターボタンを追加
add_action('restrict_manage_posts', function () {
global $pagenow;
// メディア一覧以外は処理対象外
if ($pagenow !== 'upload.php') {
return;
}
// 投稿作成可能なユーザーを取得
$users = get_users(['capability' => 'edit_posts']);
// ユーザー選択用セレクトボックスを出力
?>
<select name="filter_user">
<option value="">全てのユーザー</option>
<?php foreach ($users as $user): ?>
<?php
$selected = (isset($_GET['filter_user']) && $_GET['filter_user'] == $user->ID) ? 'selected' : '';
?>
<option value="<?= esc_attr($user->ID); ?>" <?= $selected; ?>><?= esc_html($user->display_name); ?></option>
<?php endforeach; ?>
</select>
<?php
});
// クエリにフィルターを適用
add_filter('parse_query', function ($query) {
global $pagenow;
// メディア一覧またはユーザー未選択は処理対象外
if ($pagenow !== 'upload.php' || empty($_GET['filter_user'])) {
return;
}
// 投稿者を設定
$query->query_vars['author'] = intval($_GET['filter_user']);
});
さいごに
今回紹介した方法を使えば、メディアライブラリにアップロード者での絞り込み機能を簡単に追加できます。
管理画面の利便性が向上し、複数ユーザーで運用しているサイトでも、目的のファイルを素早く見つけられるようになります。

