メディア一覧に「アイキャッチ使用中」カラムを追加する方法

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

はじめに

画像がアイキャッチとして使用されていても「アップロード先」には1件しか表示されません。
そのため、同じ画像を複数の投稿でアイキャッチとして使用している場合でも、どこで使われているかを確認する手段がありません。

そのため、画像が未使用と誤認され、誤って削除してしまうリスクが生じます。

そこで、メディア一覧に「アイキャッチ使用中」というカラムを追加し、画像がどの投稿で使用されているかを一覧表示できるようにします。

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

完成イメージ

実装手順

以下のコードをfunctions.phpに追加します。

// 管理画面一覧にカラムを追加
add_filter('manage_media_columns', function ($columns) {
  $columns['featured_in'] = 'アイキャッチ使用中';

  return $columns;
});


// 管理画面一覧のカラムにデータを表示
add_action('manage_media_custom_column', function ($column_name, $post_id) {
  if ($column_name !== 'featured_in') {
    return;
  }

  $args = [
    'post_type'  => 'any',
    'meta_query' => [
      [
        'key'     => '_thumbnail_id',
        'value'   => $post_id,
        'compare' => '=',
      ],
    ],
  ];

  // アイキャッチに使用されている投稿を取得
  $posts = get_posts($args);

  // 使用中の投稿なしは処理対象外
  if (empty($posts)) {
    echo '—';
    return;
  }

  // 使用中の投稿リンクを出力
  foreach ($posts as $post) {
    echo '<a href="' . get_edit_post_link($post->ID) . '">' . esc_html($post->post_title) . '</a><br>';
  }
}, 10, 2);

さいごに

今回紹介した方法を使えば、管理画面でアイキャッチ画像の使用状況を正確に把握できるようになります。
特に、同じ画像を複数の投稿で使っている場合でも、全ての使用箇所を一覧で確認できるため、誤って削除してしまうリスクを大幅に軽減できます。

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