WordPress タームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法

WordPress タームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法

WordPress でタームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法を紹介します。
例えば、飲食店のサイトで「親ターム:東京都(都道府県)」「子ターム:西東京市(区市)」「孫ターム:下保谷」と登録して、都道府県別の店舗一覧を表示したい場合に便利な方法です。

  1. タームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法
  2. タームの親・子の一覧に子タームの投稿一覧を追加して表示する方法
  3. タームに紐づく投稿一覧を表示する方法

タームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法

タームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法を紹介します。
次のコードは、タクソノミーのスラッグが product-categories で、カスタム投稿タイプのスラッグが products の場合の表示方法です。

<?php // WordPress タームの親・子・孫の一覧に孫タームの投稿一覧を表示する方法
$taxonomy_slug = 'product-categories'; // タクソノミースラッグを指定
$post_type_slug = 'products'; // ポストタイプの指定
$parents = get_terms($taxonomy_slug,'parent=0'); // 親のいないタームを取り出します、つまり親
foreach ( $parents as $parent ) { // 親タームのループを開始
echo '<h2>' . esc_html($parent->name) . '</h2>'; // 親タームのタイトルを表示
$children = get_terms($taxonomy_slug,'hierarchical=0&parent='.$parent->term_id);
foreach ( $children as $child ) { // 子タームのループを開始
echo '<h3>' . esc_html($child->name) . '</h3>'; // 子タームのタイトルを表示
$grandchildren = get_terms($taxonomy_slug,'hierarchical=0&parent='.$child->term_id);
foreach ( $grandchildren as $grandson ) { // 子タームのループを開始
echo '<h4>' . esc_html($grandson->name) . '</h4>'; // 孫タームのタイトルを表示
$term_slug = $grandson->slug; // 以下孫タームに紐づく投稿一覧のクエリを設定
$args = array( // クエリの作成
'post_type' => $post_type_slug, // ポストタイプを指定
$taxonomy_slug => $term_slug , // タクソノミーにタームを指定
'post_status' => 'publish', // 公開された投稿を指定
'posts_per_page' => -1 // 条件に当てはまる投稿を全て表示
);
$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 } // 孫ターム終了 ?>
<?php } // 子ターム終了 ?>
<?php } // 親ターム終了 ?>

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

タームの親・子の一覧に子タームの投稿一覧を追加して表示する方法

タームが親・子までの場合はWordPress タームの親・子の一覧に子タームの投稿一覧を表示する方法をご覧ください。

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

タームに親子関係がない場合はWordPress ターム一覧とそのタームに紐づく投稿の一覧を表示する方法をご覧ください。

まとめ

WordPress でタームの親・子・孫の一覧に孫タームの投稿一覧を追加して表示する方法を紹介しました。
紹介した方法は、投稿に親・子・孫のチェックが無い場合や、同一階層のタームを複数チェックすると正しく表示されないのでご注意ください。