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

オフィス一覧へ

受付時間|9:00~18:00(土・日・祝除く)

※お電話にてお問い合わせの際はオフィス一覧からお近くのオフィスにご連絡ください

※全国対応

ホームページ無料診断 毎月10社限定

ホームページ制作のプロがユーザビリティ・SEO・競合などを多角的に分析し、
具体的な改善案をご提案します。

無料診断する