【WordPress】ターム別の記事一覧ページを作る方法

今回は、カスタムタクソノミーのターム別に記事一覧を表示させる方法をご紹介しますね!

イメージ図は、以下のようになります。

ターム別の記事一覧を表示するためのファイルを用意する

ターム別の記事一覧を表示するために以下のファイルを用意します。

 

● taxonomy-[カスタムタクソノミーのスラッグ名].php

● taxonomy.php

 

のどちらか一つを用意してください。

使い分けとしましては、

● taxonomy-[カスタムタクソノミーのスラッグ名].php

他の「カスタムタクソノミー」とは別のファイルを使いたい場合

 

● taxonomy.php

他の「カスタムタクソノミー」と同じファイル(デザインが共通などの理由)を使いたい場合

 

ターム別の記事一覧を表示するために必要なファイルは以上となります。

サンプルコードをコピペしつつ、「繰り返し処理する内容」を記述する

以下のコードをコピペしつつ、実際の案件の内容ごとに、サブループ内の「繰り返し処理する内容」を変更してください。

 

<div>
  <?php
    $term_object = get_queried_object();
    $term_slug = $term_object->slug;
    $args = array(
      'post_type' => 'カスタム投稿タイプ名',
      'posts_per_page' => -1,
      'taxonomy' => 'カスタムタクソノミーのスラッグ名',
      'term' => $term_slug
    );
    $the_query = new WP_Query($args);
  ?>
  <?php if($the_query->have_posts()): ?>
    <?php while($the_query->have_posts()): $the_query->the_post(); ?>

      <!-- 繰り返し処理する内容 -->
      <article>
        <a href="<?php the_permalink(); ?>">
          <h2><?php the_title(); ?></h2>
        </a>
      </article>
      <!-- 繰り返し処理する内容 -->

    <?php endwhile; ?>
  <?php endif; ?>
  <?php wp_reset_postdata(); ?>
</div>

 

少しだけ解説しますと、

 

<?php
  $term_object = get_queried_object();
  $term_slug = $term_object->slug;
?>

この2行で、現在、URLで表示されている「タームのスラッグ」取得して、

 

<?php
  $args = array(
    'term' => $term_slug
  );
?>

動的に取得した「タームのスラッグ」をサブループのパラメータ内の「term」に渡しております。

別パターン

基本的には、先述した内容で問題なく動作しますが、別パターンも記載します。

 

<div>
  <?php
    $term = wp_get_object_terms($post->ID, 'カスタムタクソノミーのスラッグ名');
    $args = array(
        'post_type' => 'カスタム投稿タイプ名',
        'posts_per_page' => -1,
        'taxonomy' => 'カスタムタクソノミーのスラッグ名',
        'term' => $term[0]->slug
    );
    $the_query = new WP_Query($args);
  ?>
  <?php if($the_query->have_posts()): ?>
    <?php while($the_query->have_posts()): $the_query->the_post(); ?>

      <!-- 繰り返し処理する内容 -->
      <article>
        <a href="<?php the_permalink(); ?>">
          <h2><?php the_title(); ?></h2>
        </a>
      </article>
      <!-- 繰り返し処理する内容 -->

    <?php endwhile; ?>
  <?php endif; ?>
  <?php wp_reset_postdata(); ?>
</div>

どちらも非推奨タグではありませんで、お好きな方を選んでお使いください。

 

今回は以上です。

SNSでもご購読できます。

コメントを残す

前の記事

次の記事