ある特定のタームに属する記事だけを出力する方法を紹介します。
例えば、「ニュース」というタクソノミーの中の「IT」というタームに属する記事のみを出力したい時なんかに使えます。
特定のタームに属する記事の一覧を出力する方法
特定のタームに属する記事の一覧を出力するには、テーマ内に以下のコードを記述します。
<ul> <?php $args = array( 'post_type' => 'post', //投稿タイプ名 'posts_per_page' => 10, //出力する記事の数 'tax_query' => array( array( 'taxonomy' => 'news', //タクソノミー名 'field' => 'slug', 'terms' => 'it' //タームのスラッグ ) ) ); $domestic_post = get_posts($args); if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?> <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <?php else : ?> <li>表示する記事がありません。</li> <?php endif; wp_reset_postdata(); ?> </ul>
上記を記述すると、「news」タクソノミーの「it」タームに属する記事が、10件リストで表示されます。投稿タイプ名やタクソノミー名、ターム名は適宜変更してください。
上記は、シンプルにリンク付きのタイトルをリストで出力するコードですが、アイキャッチと抜粋文も表示するなら、以下のような感じにします。
<ul> <?php $args = array( 'post_type' => 'post', //投稿タイプ名 'posts_per_page' => 10, //出力する記事の数 'tax_query' => array( array( 'taxonomy' => 'news', //タクソノミー名 'field' => 'slug', 'terms' => 'it' //タームのスラッグ ) ) ); $domestic_post = get_posts($args); if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); ?> <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if( has_post_thumbnail() ): ?> <?php the_post_thumbnail( 'thumbnail' ); ?> <?php else: ?> <img src="<?php echo get_template_directory_uri(); ?>/images/noimage.png"> <?php endif; ?> <?php the_title(); ?> <?php the_excerpt(); ?> </a></li> <?php endforeach; ?> <?php else : ?> <li>表示する記事がありません。</li> <?php endif; wp_reset_postdata(); ?> </ul>
こんな感じで色々と自分好みにカスタマイズしてください。
ちなみにtax_queryのfieldで指定できる値は、「term_id」「slug」「name」「term_taxonomy_id」になります。
あとがき
タームの絞り込みにtax_queryを使うというところがミソですね。
特定のタームに属する記事の一覧を出力したいことって、結構ある気がします。上記のように簡単に実現することができますので、ぜひ参考にしていただければと思います。