カスタム投稿タイプの関連記事を表示する方法

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

はじめに

関連記事機能は、デフォルトでは通常投稿(post)のみを対象としています。

そのため、カスタム投稿タイプでは関連性のない記事が表示されてしまいます。

そこで、カスタム投稿タイプの場合にタクソノミー(カテゴリー・タグ等)に基づいて関連記事を取得し、本文下や「関連記事」ウィジェットへ正しく表示させます。

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

実装手順

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

add_filter('get_related_wp_query_args', function ($args) {
  global $post;

  if (!$post) {
    return $args;
  }

  // 現在の投稿タイプを取得
  $post_type = get_post_type($post);

  if ($post_type === 'post') {
    return $args;
  }

  // カスタム投稿タイプを設定
  $args['post_type'] = $post_type;

  // 関連タクソノミーを設定
  $taxonomies = get_object_taxonomies($post_type, 'names');

  foreach ($taxonomies as $taxonomy) {
    $terms = wp_get_post_terms($post->ID, $taxonomy, ['fields' => 'ids']);
    if (!empty($terms)) {
      $args['tax_query'] = [[
        'taxonomy' => $taxonomy,
        'field'    => 'term_id',
        'terms'    => $terms,
      ]];
      break;
    }
  }

  return $args;
}, 20);

さいごに

今回紹介した方法を使えば、本文下や「関連記事」ウィジェットにカスタム投稿タイプの関連記事を表示できるようになります。
タクソノミーに基づく自動関連付けにより、投稿同士の関連性を維持しながら、サイトの利便性や閲覧体験を向上させることが可能です。

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