WordPressでカテゴリー別(ターム別)に記事一覧を表示する
- WordPress -
2023.03.18
WordPressでWebサイト制作中、こんな↓感じで1ページ内でカテゴリー別(というかタームごと)に分けて記事一覧を表示したい方へ。
使う頻度の割りに、毎回忘れるのでメモしておきます。
WordPress:カテゴリー別(ターム別)に記事一覧を表示する
以下コードは、
- 投稿タイプが「news」
- カスタムタクソノミーが「news_category」
という前提で書いてあります。★部分の文字列をご自分の環境に書き換えてコピペ一発で片付けましょう!
PHP<?php // タクソノミー(カテゴリ)別に記事を一覧出力
$terms = get_terms( '★news_category' );
foreach ( $terms as $term ) :
$args = array(
'post_type' => '★news',
'taxonomy' => '★news_category',
'term' => $term->slug,
'posts_per_page' => -1,
'no_found_rows' => true,
);
$query = new WP_Query($args); ?>
<h3><?php echo esc_html( $term->name ); ?></h3>
<ul>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post();?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_time('Y.m.d'); ?>
<?php the_title(); ?>
</a>
</li>
<?php endwhile;?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
</ul>
<?php endforeach; ?>
<a href="<?php echo esc_url(get_post_type_archive_link('★news')); ?>">過去のニュース一覧を見る</a>
書き換えポイント:
- 2、6行目の★部分を、意図したタクソノミーの名前(スラッグ)に書き換え
- 5、27行目の★部分を、意図した投稿タイプの名前(スラッグ)に書き換え
27行目のアーカイブページへのリンクや、ループ内の表示はお好みで調整してください。
全件表示にしてあるので、表示件数を変える場合は8行目の'posts_per_page'で件数を指定してください。
これで、カテゴリー/タクソノミーのタームに紐づけた記事を、タームごとにまとめて全部出力してくれるはずです!