あっという間に1月ももう半ばです。
1月は行く、2月は逃げる、3月は去ると営業用語でよく使いますが、
1月のうちにできることは確実にしておかなければならないですね!
今回はなかなか調べても出てこなかったタクソノミーのタームごとに投稿した項目を表示するという
やり方です。
おそらく今回私が紹介するやり方以外にもいろんな方法が(というかもっといい方法が)あると思いますので
アドバイスいただけるかたはぜひご指摘ください。
私が今回やりたかったことを例としてまずわかりやすく説明します。
カテゴリーとしては
食べ物(カスタム投稿タイプ)
・和食(親カテゴリー(親ターム①))
-定食(子カテゴリー(子ターム①))
-丼ぶり(子カテゴリー(子ターム②))
・中華(親カテゴリー(親ターム②))
-ラーメン(子カテゴリー(子ターム③))
-餃子(子カテゴリー(子ターム④))
・洋食(親カテゴリー(親ターム③))
-ハンバーグ(子カテゴリー(子ターム⑤))
-グラタン(子カテゴリー(子ターム⑥))
こんな感じ。でページ上には次のようなイメージで表示したかったのです。
これ結構やりたい人多いはず。
でも私の調べ方が下手なのかなんかしっくりくる記事が見つかりませんでした。
ほんで私が実装したソースがこちら。
ソース自体は、archive.phpを複製して書いています。
<section id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <section class="creat_list"> <?php $arrTerm = array('親ターム①のスラッグ','親ターム②のスラッグ','親ターム③のスラッグ'); foreach($arrTerm as $value): $args = array( 'post_type' => 'カスタム投稿タイプ名(食べ物に設定した名前[例:eat_list])', 'posts_per_page' => -1,//全件表示 'tax_query' => array(array( 'taxonomy' => 'タクソノミー名[例:eat_category]', 'field' => 'slug', 'terms' => $value, ))); $domestic_post = get_posts($args); ?> <?php if(!empty($domestic_post)): ?> //上記に設定した内容のカテゴリーがどれか選ばれている場合 <div class="kind_wrap"> //タイトルの出し分け <?php if($value == '親ターム①のスラッグ'): ?> <h2 class="kind_title"><span>和食</span></h2> <?php elseif($value == '親ターム②のスラッグ'): ?> <h2 class="kind_title"><span>中華</span></h2> <?php elseif($value == '親ターム③のスラッグ'): ?> <h2 class="kind_title"><span>洋食</span></h2> <?php endif ;?> <?php endif ;?> <?php if(!empty($domestic_post)): ?> <ul> <?php endif ;?> <?php if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?> //$argsで設定しな内容を表示 <li class="wow zoomIn"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if(has_post_thumbnail()): ?> <div class="ol_img" style="background-image: url(<?php echo get_custom_default_list_image(); ?>);"></div> <?php endif ;?> <h2><?php the_title(); ?></h2> </a></li> <?php endforeach; ?> <?php endif;wp_reset_postdata(); ?> <?php if(!empty($domestic_post)): ?> </ul> </div> <?php endif ;?> <?php endforeach; ?> </section> </main><!-- .site-main --> </section><!-- .content-area -->
こんな感じです。たぶんこれで出力されるはず!
私はできたので。みなさんもぜひ挑戦してみてください。