複数ユーザー運営時に、メディア一覧に「アップロード者」絞り込み機能を追加する方法

Cocoonカスタマイズ集
この記事は約2分で読めます。
記事内に広告が含まれています。

はじめに

複数ユーザーで運営していると、メディアライブラリがどんどん膨れ上がり、「誰がどのファイルをアップしたのか分からない」という状況になりがちです。

特に編集者や寄稿者が多いサイトでは、アップロード者ごとにメディアを絞り込める機能があると、管理効率が大幅に向上します。

この記事では、この方法について説明します。

完成イメージ

実装手順

以下のコードを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']);
});

さいごに

今回紹介した方法を使えば、メディアライブラリにアップロード者での絞り込み機能を簡単に追加できます。
管理画面の利便性が向上し、複数ユーザーで運用しているサイトでも、目的のファイルを素早く見つけられるようになります。

タイトルとURLをコピーしました