投稿や固定ページ一覧に「アイキャッチ有無」絞り込み機能を追加する方法

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

はじめに

複数の投稿を管理していると、どの投稿にアイキャッチ画像が設定されているかを素早く把握したい場合があります。

特に、アイキャッチの有無で絞り込みができれば、投稿管理の効率が格段に向上します。

そこで、Cocoon設定→管理者画面→カラム表示「 アイキャッチを表示する」をオンにした場合に、絞り込み機能を追加します。

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

完成イメージ

実装手順

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

// 一覧にフィルターボタンを追加
add_action('restrict_manage_posts', function ($post_type) {
  global $pagenow;

  $options = [
    ''  => 'アイキャッチ',
    '1' => 'アイキャッチあり',
    '0' => 'アイキャッチなし',
  ];

  if ($pagenow !== 'edit.php' || !is_admin_list_eyecatch_visible()) {
    return;
  }

  // 選択中のアイキャッチ条件を取得
  $selected = isset($_GET['has_thumbnail']) ? $_GET['has_thumbnail'] : '';

  ?>
  <select name="has_thumbnail">
    <?php foreach ($options as $value => $label): ?>
      <option value="<?= esc_attr($value); ?>" <?php selected($selected, $value); ?>>
        <?= esc_html($label); ?>
      </option>
    <?php endforeach; ?>
  </select>
  <?php
});


// 投稿クエリの取得条件を変更
add_filter('pre_get_posts', function ($query) {
  if (!is_admin() || !$query->is_main_query() || !isset($_GET['has_thumbnail'])) {
    return;
  }

  $has_thumbnail = $_GET['has_thumbnail'];

  switch ($has_thumbnail) {
    case '1':
      $compare = 'EXISTS';
      break;

    case '0':
      $compare = 'NOT EXISTS';
      break;

    default:
      return;
  }

  $meta_query = $query->get('meta_query') ?: [];
  $meta_query[] = [
    'key'     => '_thumbnail_id',
    'compare' => $compare,
  ];
  // アイキャッチ条件を設定
  $query->set('meta_query', $meta_query);
});

さいごに

今回紹介した方法を使えば、WordPressの投稿一覧でアイキャッチ画像の有無を簡単に確認でき、管理効率を大幅に改善できます。
特に大量の投稿を扱うサイトでは、視覚的な確認だけでなく、絞り込み機能を活用することで作業時間を短縮できます。

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