タクソノミーのタームに紐づく記事一覧をツリー構造のように表示することがたまにあって、要領をいつも忘れるから覚書。
例)
■親ターム名
○子ターム名
・記事タイトル
・記事タイトル
・記事タイトル
○子ターム名
・記事タイトル
・記事タイトル
・記事タイトル
■親ターム名
○子ターム名
・記事タイトル
・記事タイトル
・記事タイトル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
<div class="l-primary"> <?php echo '<div class="p-entry__body sentry">'; the_content(); echo '</div>'; $categories = get_terms('studio_region','parent=0'); foreach ( $categories as $cat ) { echo '<h2 class="sentry-ttl">' . esc_html($cat->name) . '</h2>'; $children = get_terms('studio_region','hierarchical=0&parent='.$cat->term_id); if($children){ foreach ( $children as $child ) { echo '<h3 class="sentry-sub-ttl">' . esc_html($child->name) . '</h3>'; $catslug = $child->slug; $args = array( 'post_type' => 'studio', 'tax_query' => array( array( 'taxonomy' => 'studio_region', 'terms' => array( $catslug ), 'field' => 'slug', 'include_children' => true, 'operator' => 'IN' ) ), 'posts_per_page' => -1 ); $myquery = new WP_Query( $args ); ?> <?php if ( $myquery->have_posts()): ?> <div class="p-blog-list"> <?php while($myquery->have_posts()) : $myquery->the_post(); ?> <article class="p-blog-list__item p-article01"> <a class="p-article01__img p-hover-effect--type1" href="<?php the_permalink() ?>"> <?php if(has_post_thumbnail()) : ?> <img src="<?php echo get_the_post_thumbnail_url($post->ID,'size1'); ?>" class="attachment-size1 size-size1 wp-post-image" alt=""> <?php else : ?> <img src="<?php echo $tempurl; ?>/assets/images/600x600.gif" class="attachment-size1 size-size1 wp-post-image" alt=""> <?php endif; ?> </a> <div class="p-article01__content"> <h3 class="p-article01__title"> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> </h3> </div> </article> <?php endwhile; ?> </div> <?php endif; ?> <?php wp_reset_postdata(); ?> <?php } ?> <?php } else { $catslug = $cat->slug; $args = array( 'post_type' => 'studio', 'tax_query' => array( array( 'taxonomy' => 'studio_region', 'terms' => array( $catslug ), 'field' => 'slug', 'include_children' => true, 'operator' => 'IN' ) ), 'posts_per_page' => -1 ); $myquery = new WP_Query( $args ); ?> <?php if ( $myquery->have_posts()): ?> <div class="p-blog-list"> <?php while($myquery->have_posts()): $myquery->the_post(); ?> <article class="p-blog-list__item p-article01"> <a class="p-article01__img p-hover-effect--type1" href="<?php the_permalink() ?>"> <?php if(has_post_thumbnail()) : ?> <img src="<?php echo get_the_post_thumbnail_url($post->ID,'size1'); ?>" class="attachment-size1 size-size1 wp-post-image" alt=""> <?php else : ?> <img src="<?php echo $tempurl; ?>/assets/images/600x600.gif" class="attachment-size1 size-size1 wp-post-image" alt=""> <?php endif; ?> </a> <div class="p-article01__content"> <h3 class="p-article01__title"> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> </h3> </div> </article> <?php endwhile; ?> </div> <?php endif; ?> <?php wp_reset_postdata(); ?> <?php } ?> <?php } ?> </div> |