LAST UPDATE   | Posted by Takumi Hirashima

WordPress ターム一覧とそのタームに紐づく投稿の一覧を表示する方法

WordPress ターム一覧とそのタームに紐づく投稿の一覧を表示する方法

WordPress でターム一覧とそのタームに紐づく投稿の一覧を表示する方法を紹介します。
例えば、分類ごとに分けられた投稿を表示するようなコンテンツを作成したい時に便利な方法です。

タームに紐づく投稿の一覧を表示

タームに紐づく投稿の一覧を表示する方法を紹介します。
例えば、タクソノミーが products-category で投稿タイプが products の場合。
ターム名を見出しとして表示してタームに紐づく投稿の一覧を表示したい時に、次のコードをテンプレートファイルに追加します。

<?php // タームに紐づく投稿の一覧を表示
  $taxonomy_slug = 'products-category'; // カスタムタクソノミーのスラッグを指定
  $post_type_slug = 'products'; // 投稿タイプのスラッグを指定
  $terms = get_terms($taxonomy_slug); // タームを取得
  foreach ( $terms as $value ) { 
    echo '<h2>'.esc_html($value->name).'</h2>'; // ターム名を表示
    $term_slug = $value->slug; // タームに紐づく投稿一覧のクエリを設定
    $args = array(
      'post_type' => $post_type_slug, // 投稿タイプの指定
      $taxonomy_slug => $term_slug , // タクソノミーからタームを指定
      'posts_per_page' => -1, // タームに紐づく投稿を全てを表示
      'post_status' => 'publish' // 公開済みの投稿を表示
    );
    $myquery = new WP_Query( $args );
?>
<?php if ( $myquery->have_posts()): ?>
<ul>
<?php while($myquery->have_posts()): $myquery->the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
<?php } // ループの終了 ?>

タクソノミーの指定は $taxonomy_slug = 'products-category’;products-category を変更。
投稿タイプの指定は $post_type_slug = 'products';products を変更してください。

まとめ

WordPress でターム一覧とそのタームに紐づく投稿の一覧を表示する方法を紹介しました。

スポンサーリンク