WordPressでカスタム投稿タイプの特定ターム(term)のみを単一または複数でループ表示したい場合の方法
-
-
-
はてな -
-
WordPressの「カスタム投稿」という機能を使った際に、
カスタム投稿用のアーカイブページで、
特定のターム(term)のみをループ表示したい場合の方法をお伝えします。
query_postsで条件を指定します。
複数のタームを表示する際は、複数タクソノミークエリー「tax_query」が便利です。
今回はjapanというカスタム投稿名の、
areaというカスタム投稿分類(タクソノミー)の、
青森(aomori)、岩手(iwate)、宮城(miyagi)に属する記事を表示するという設定です。
<?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(); ?>
query_postsを使用する際は、必ず最後に<?php wp_reset_query(); ?>で閉じるようにしましょう。
また、’posts_per_page’=> -1と指定することで、全ての記事を表示することができます。
ちなみに複数のタームではなく、一つのタームだけで良い場合は、
もっと簡単に記述することができます。
<?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(); ?>
このように記述することで指定することができます。
-
-
-
はてな -
-