WordPressの「カスタム投稿」という機能を使った際に、
カスタム投稿用のアーカイブページで、
特定のターム(term)のみをループ表示したい場合の方法をお伝えします。
query_postsで条件を指定します。
複数のタームを表示する際は、複数タクソノミークエリー「tax_query」が便利です。
今回はjapanというカスタム投稿名の、
areaというカスタム投稿分類(タクソノミー)の、
青森(aomori)、岩手(iwate)、宮城(miyagi)に属する記事を表示するという設定です。
[php]<?php
$args=array(
‘tax_query’ => array(
array(
‘taxonomy’ => ‘area’, //タクソノミーを指定
‘field’ => ‘slug’, //ターム名をスラッグで指定する
‘terms’ => array( ‘aomori’,’iwate’,’miyagi’ ) //表示したいタームをスラッグで指定
),
),
‘post_type’ => ‘japan’, //カスタム投稿名
‘posts_per_page’=> 5 //表示件数(-1で全ての記事を表示)
);
?>
<?php query_posts( $args ); ?>
<?php if(have_posts()): ?>
<?php while(have_posts()):the_post(); ?>
ページが存在する場合の指定
<?php endwhile; else: ?>
ページが存在しない場合の指定
<?php endif; ?>
<?php wp_reset_query(); ?>[/php]
query_postsを使用する際は、必ず最後に<?php wp_reset_query(); ?>で閉じるようにしましょう。
また、’posts_per_page’=> -1と指定することで、全ての記事を表示することができます。
ちなみに複数のタームではなく、一つのタームだけで良い場合は、
もっと簡単に記述することができます。
[php]<?php query_posts( array(
‘post_type’ => ‘japan’, //カスタム投稿名
‘taxonomy’ => ‘area’,
‘term’ => ‘aomori’,
‘posts_per_page’ => 5 //表示件数( -1 = 全件 )
)); ?>
<?php if(have_posts()): ?>
<?php while(have_posts()):the_post(); ?>
ページが存在する場合の指定
<?php endwhile; else: ?>
ページが存在しない場合の指定
<?php endif; ?>
<?php wp_reset_query(); ?>[/php]
このように記述することで指定することができます。