【WordPress】メディアライブラリに独自の分類フィルターを追加する方法

【WordPress】メディアライブラリに独自の分類フィルターを追加する方法 WordPress

WordPressでは、メディアライブラリにアップロードされた画像やPDFなどのファイルを一括管理できますが、標準では「すべてのメディアアイテム」「画像」「未添付」などの基本的なフィルターしか用意されていません。大量のメディアファイルを扱うサイトでは、これだけでは管理しづらい場合があります。

この記事では、メディアライブラリに独自の分類(カスタムタクソノミー)を追加し、管理画面での絞り込みに対応させる方法を紹介します。

カスタムタクソノミーを「attachment」タイプに追加する

まずは、メディア(添付ファイル)に対応したカスタムタクソノミーを登録します。functions.phpに以下のコードを追加してください。

function add_media_taxonomy() {
  register_taxonomy(
    'media_category',
    'attachment',
    array(
      'label'        => 'メディア分類',
      'public'       => false,
      'hierarchical' => true,
      'show_ui'      => true,
      'show_admin_column' => true,
      'rewrite'      => false,
    )
  );
}
add_action('init', 'add_media_taxonomy');

このコードにより、「メディア分類」というカスタムタクソノミーが作成され、管理画面のメディア詳細編集画面でも設定可能になります。

メディアライブラリにフィルター項目を追加する

次に、メディアライブラリ(リスト表示時)で「メディア分類」での絞り込みができるように、ドロップダウンフィルターを追加します。

function add_media_category_filter() {
  global $typenow;

  if ($typenow !== 'attachment') {
    return;
  }

  $taxonomy = 'media_category';
  $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
  $info_taxonomy = get_taxonomy($taxonomy);

  wp_dropdown_categories(array(
    'show_option_all' => esc_html($info_taxonomy->labels->all_items),
    'taxonomy'        => $taxonomy,
    'name'            => $taxonomy,
    'orderby'         => 'name',
    'selected'        => $selected,
    'hierarchical'    => true,
    'depth'           => 3,
    'show_count'      => false,
    'hide_empty'      => true,
  ));
}
add_action('restrict_manage_posts', 'add_media_category_filter');

この処理により、メディアライブラリ上部に「メディア分類」のドロップダウンが表示され、分類によるフィルタリングが可能になります。

フィルターが有効になるようにクエリを調整する

最後に、ドロップダウンで選択された分類が有効になるように、クエリの調整処理を追加します。

function convert_media_category_query($query) {
  global $pagenow;

  if (
    isset($_GET['media_category']) &&
    is_admin() &&
    $pagenow === 'upload.php'
  ) {
    $term = sanitize_text_field($_GET['media_category']);
    $query->set('tax_query', array(
      array(
        'taxonomy' => 'media_category',
        'field'    => 'term_id',
        'terms'    => $term,
      )
    ));
  }
}
add_action('pre_get_posts', 'convert_media_category_query');

これで、選択された「メディア分類」に基づいて、表示されるメディアが自動的に絞り込まれるようになります。

まとめ

メディアライブラリに独自の分類フィルターを追加することで、管理画面でのメディア整理が格段に効率化されます。とくに企業サイトやメディア運営など、画像・PDF・資料などを多く扱う場面では大きな効果を発揮します。

必要に応じて、分類を細分化したり、メディアアップローダーとの連携を強化することも可能です。ぜひカスタマイズに活用してみてください。