【WordPress】現在開いてる親タームページから子ターム事に記事一覧を取得・出力する方法

WordPressで現在開いてる親タームページから子ターム情報を取得。
登録されてる子ターム毎に記事一覧を出力する方法を知りたい。
本記事ではこのような悩みを解決。
実装方法について解説します。
子ターム記事一覧を取得・出力する
<?php
$terms = get_terms('タクソノミー名', 'hide_empty=0&parent=' . get_queried_object_id()); // タクソノミー・現在のタームIDを指定
foreach ($terms as $term) : //登録されてる子タームを全て出力
?>
<h2>
<?php echo $term->name; //子ターム名
?>
</h2>
<?php
$args = array(
'post_type' => 'カスタム投稿タイプ名', //投稿タイプを指定
'posts_per_page' => '-1', //表示件数
'post_status' => 'publish',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'タクソノミー名', //タクソノミー名を指定
'field' => 'slug',
'terms' => $term->slug,
),
),
);
$the_query = new WP_Query($args);
?>
<?php if ($the_query->have_posts()) : ?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<!-- 子ターム記事 -->
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
<?php endforeach; ?>
現在開いてる親タームページから子ターム記事一覧を取得・出力するサンプルコードです。
カスタム投稿タイプ名・タクソノミー名を実装環境に合わせ変更してください。
コードの内訳は以下の通りです。
まず、get_terms関数を使いパラメータにhide_empty=0・parent=’ . get_queried_object_id()を指定。
これで現在のタームの子ターム情報を取得。
foreachで子タームの数だけループさせます。
foreachループ内でwp_query関数を使い、子タームの記事情報を出力します。
以上で実装完了です。
まとめ
子ターム毎に記事一覧を分けて出力したい時に便利です。
以上で解説を終わります。
目次