WordPressでカスタム投稿の特定のタームをもつ記事だけ表示する方法

WordPressのカスタム投稿を、特定のタームをもつ記事だけに絞り込んで一覧表示する方法の備忘録です。

アーカイブページなどで、特定のタームで絞り込んでカスタム投稿ページをループ表示します。

サブループで表示する

WP_Queryのtax_queryパラメーターを使用することで、タクソノミーやタームで限定したカスタム投稿をサブループで表示します。

以下のサンプルコードでは、カスタム投稿「イベント(event)」において、タクソノミー「開催場所(area)」にターム「東京(tokyo)」が設定されている投稿を5件表示します。

<?php
  $args=array(
    'post_type' => 'event',
    'posts_per_page'=> 5,
    'tax_query' => array( 
      array(
        'taxonomy' => 'area',
        'field' => 'slug',
        'terms' => 'tokyo'
      ),
    )
  );
  query_posts( $args );
  if(have_posts()):
?>
<ul>
<?php
while(have_posts()):the_post();
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php else: ?>
ページが存在しない場合の記述
<?php endif; ?>
<?php wp_reset_query(); ?>

query_postsに指定する配列では、post_typeにカスタム投稿名「event」を設定しています。

表示件数はposts_per_pageに数値の「5」を設定しています。すべての記事を表示したい場合は「-1」を入力します。

tax_queryの中では、taxonomyに対象のタクソノミー名である「area」を指定し、fieldではタームの指定方法として「slug(スラッグ)」を選択します。
最後に、termsへ実際に表示したいタームのスラッグ名「tokyo」を指定することで、絞り込みが完了します。

複数のタームを指定する場合

「東京(tokyo)」「神奈川(kanagawa)」「千葉(chiba)」など、複数のタームに属する記事をまとめて表示したい場合は、termsを配列(array)形式で指定します。

'terms' => array('tokyo', 'kanagawa', 'chiba')

表示したいタームのスラッグを配列で指定することで、いずれかの条件に当てはまるタームを持つ投稿ページに限定して表示することができます。

Share on
関連記事
WordPressで記事内に同じカテゴリーの記事一覧を表示する方法
WordPressで記事内に同じカテゴリーの記事一覧を表示する方法
WordPressから「モデレートしてください」と通知がくる時の対処法
WordPressから「モデレートしてください」と通知がくる時の対処法
LightStartでメンテナンスモードを設定する方法
LightStartでメンテナンスモードを設定する方法