東京渋谷のホームページ制作会社 ウェブ企画パートナーズ

WordPressでカスタム投稿タイプの特定ターム(term)のみを単一または複数でループ表示したい場合の方法

  • はてな
WordPress 最終更新日:2020/06/12 公開日:2012/10/04

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(); ?>

このように記述することで指定することができます。

  • はてな

CONTACT

Webサイト制作のご相談やご質問、ご不明点などございましたらこちらよりお問い合わせください。
「ホームページ制作について」とお伝えください。担当者にお代わりいたします。