関連記事からアイキャッチ画像がない投稿を除外する方法

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

はじめに

以下の記事では、関連記事の中からアイキャッチ画像が設定されていない投稿を除外する方法を紹介しています。

しかし、テンプレートファイル(related-list.php)を子テーマにコピーして直接書き換える手法は、親テーマのアップデートなどでテンプレート構造に変更があった際に影響を受けるリスクがあります。

そこで、ファイルを直接書き換えない「テンプレートフック」を活用した方法に変更します。

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

実装手順

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

add_filter('get_related_wp_query_args', function ($args) {
  $args['meta_query'] = [
    [
      'key'     => '_thumbnail_id',
      'compare' => 'EXISTS',
    ],
  ];
  return $args;
});

カテゴリーやタグの編集画面でアイキャッチ画像を設定している場合、本来であればアイキャッチ未設定の投稿にもそれらの画像が補完されて表示されます。
しかし、本コードを適用すると投稿自体にアイキャッチ画像が未設定の場合、除外対象となりますのでご注意ください。

参考:カルーセルからアイキャッチ画像がない投稿を除外する方法

Cocoon設定→カルーセルも関連記事と同じくランダムで投稿を表示するため、アイキャッチ画像のない投稿が出現してしまいます。
そこで、カルーセル表示からもアイキャッチ未設定の投稿を除外していきます。

実装手順

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

add_filter('cocoon_carousel_args', function ($args) {
  $args['meta_query'] = [
    [
      'key'     => '_thumbnail_id',
      'compare' => 'EXISTS',
    ],
  ];
  return $args;
});

さいごに

今回紹介した方法を使えば、親テーマのアップデートを気にすることなく、安全に関連記事やカルーセルの表示を整えることができます。
アイキャッチ画像のない過去の記事が混ざってしまうのを防ぐことで、サイト全体の見栄えも格段に良くなります。

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