【ワードプレス】カスタム投稿で特定のタームだけを一覧表示する方法

ワードプレスのカスタム投稿で、特定のタームのみを表示する方法の紹介です。
例えば「お知らせ」というタクソノミー内で「キャンペーン」「店休日」「その他」というタームがあったとします。
そのうち、「店休日」だけの一覧を作りたいというような時に使えます。

それではコードを見ていきましょう

カスタム投稿を表示する基本コード

カスタム投稿の一覧を表示する基本となるコードは以下です。

<?php 
$args = array ( 
'post_type' => 'news',
'posts_per_page' => 3
); 
$news = new WP_Query( $args ); 
if ( $news -> have_posts()): 
?> 
<dl> 
<?php 
while ($news -> have_posts()): $news -> the_post();
?>
<dt><a href="<?php the_permalink(); ?>"><?php echo get_the_date(); ?></a></dt>
<dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
<?php endwhile; ?>
</dl>
<?php 
endif; wp_reset_postdata(); 
?>

カスタム投稿が分からない方は下記の「Custom Post Type UI」の紹介ページを参照してください。

特定のタームのみを表示するためのコードを追加する

基本コードに、特定のタームのみを表示するコードを追加します。

特定のタームのみを表示するコード

以下のコードを基本コードに追加します。

'tax_query' => array(
array(
'taxonomy' => 'categories_cat', //タクソノミーを指定
'field' => 'slug', //ターム名をスラッグで指定する
'terms' => 'holiday', //表示したいタームをスラッグで指定
'operator' => 'IN'
),
)

完成コード

<?php
$args = array (
'post_type' => 'news',
'posts_per_page' => 3,
'tax_query' => array(
array(
'taxonomy' => 'categories_cat', //タクソノミーを指定
'field' => 'slug', //ターム名をスラッグで指定する
'terms' => 'holiday', //表示したいタームをスラッグで指定
'operator' => 'IN'
),
)
);
$news = new WP_Query( $args );
if ( $news -> have_posts()):
?>
<dl>
<?php
while ($news -> have_posts()): $news -> the_post();
?>
<dt><a href="<?php the_permalink(); ?>"><?php echo get_the_date(); ?></a></dt>
<dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
<?php endwhile; ?>
</dl>
<?php
endif; wp_reset_postdata();
?>

これで、「newsという投稿タイプ」の「categories_catというタクソノミー」に設定してある「holidayというターム」のみを表示するコードができました。