WordPressカスタマイズ事例

複数カスタムタクソノミー横断で、同一タームの記事の一覧を取得する

カスタム投稿タイプがいくつかあって、それらすべての同一タームの記事を取得する方法のご紹介です。
 
たとえば、サイト運営者が映像制作会社で

・movie
・cm
・animation

という事業カテゴリ(カスタム投稿タイプ)があって、それぞれが

・movie_cat
・cm_cat
・animation_cat

というカスタム分類を持ち、

・result(日本向けコンテンツ)
・result_for_foreign(外国向けコンテンツ)

というカテゴリ(ターム)があるとします。

このとき、movie、cm、animationすべてのresult(日本向けコンテンツ)を取得したい場合、

$result_post_type = 'any';

$the_query = new WP_Query( array(
	'post_status' => 'publish',
	'post_type' => $result_post_type,
	'posts_per_page' => -1, //全件取得
	'tax_query' => array(
		'relation' => 'OR',
		array(
			'taxonomy' => 'movie_cat',
			'field' => 'slug',
			'terms' => 'result'
		),
		array(
			'taxonomy' => 'cm_cat',
			'field' => 'slug',
			'terms' => 'result'
		),
		array(
			'taxonomy' => 'animation_cat',
			'field' => 'slug',
			'terms' => 'result'
		),
	),
	'orderby' => 'date'
) );

このように、’tax_query’ をつかって複数のタクソノミー(カスタム分類)を ‘relation’ の条件で取得することができます。
あとは通常通りwhileで繰り返せば完成です。

if ($the_query->have_posts()) :

while ($the_query->have_posts()) : $the_query->the_post();

//なんかの処理

endwhile;

endif;

wp_reset_query();

事業カテゴリとか関係なく、とにかく日本向けの新作情報を出したい、というときに使えます。


その他のWordPressカスタマイズ事例