■親ターム
┗子ターム1
・記事1
・記事2
┗子ターム2
・記事1
・記事2
といったループをさせる。
子ターム名を一度だけ表示させ、その中に記事をループといった形
まずは準備としてカスタム投稿スラッグ、カテゴリID、タクソノミー名などを取得する。
1 2 3 4 5 6 |
<?php $term_id = 2;//カテゴリーIDです。管理画面でカテゴリー表示をし、URLをみると「taxonomy=◯◯ID=●●」といった形で確認できる $taxonomy_name = 'aaa';//タクソノミー名 $post_name = 'bbb';//カスタム投稿のスラッグ $termparent = get_term( $term_id, $taxonomy_name );//親ターム取得 ?> |
次に、下記でループさせる。
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 |
<?php foreach ( $termchildren as $child ) :?> <?php $term = get_term_by( 'id', $child, $taxonomy_name );?> <section> <h4 class="c-heading-level4 c-heading-level4--horizontal-line"><span><?php echo $term->name;?></span></h4><!-- 子ターム名をループ --> <div class="c-foods-menu"> <?php $term_slug = $term -> slug; //配列を変数に格納 ?> <!-- 記事のループ --> <?php $args = array( 'post_type' => $post_name, //投稿タイプは制作事例なのでworksに設定 'tax_query' => array( //タクソノミー、タームの設定 array( 'taxonomy' => $taxonomy_name, //タクソノミー変数 'field' => 'slug', //基本的にslugに指定します(必須)) 'terms' => $term_slug //子ターム変数 ) ) ); $domestic_post = get_posts($args); ?> <?php if($domestic_post) : ?> <?php foreach($domestic_post as $post) : ?> <?php setup_postdata( $post ); ?> ここに記事のループを入れる <?php endforeach; ?> |