WordPress覚書 その3 「特定のタクソノミーに属するタームの取得と記事一覧の出力とか」
/ 2016.06.28 /
WEB /
複数のタクソノミーが設定されている記事において、
特定のタクソノミーのタームを抜き出して同じタームを持っている記事を関連記事として一覧で表示する。
この要件で、ちょっと詰まったのでメモ。
get_the_terms
で取得したいtaxonomyのtermsを取得し、
tax_query
に代入してまわす。
やり方が良くないとおもうんだけど、普通にtaxonomy => 'hogehoge'
で指定してもなぜか表示されなかった…。
<?php
$term_var = get_the_terms( $post->ID, '取得したいタームのあるタクソノミー' );
$postQuery = new WP_Query();
$param = array(
'posts_per_page' => '5',
'post_type' => 'カスタム投稿タイプ',
'paged' => $paged,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => '取得したいタームのあるタクソノミー',
'field' => 'slug',
'terms' => $term_var[0]
)
)
);
$postQuery->query($param);
?>
<?php
if( $postQuery->have_posts() ) :
while( $postQuery->have_posts() ) :
$postQuery->the_post();
?>
// ループ内容記述
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>
tax_query
さえ覚えておけばタクソノミーorタームの出力は割りとお手の物っぽい。
下記のサイトが分かりやすい。
参考:WordPressの新機能 複数タクソノミークエリーまとめ
http://www.warna.info/archives/287/
現在表示している記事を関連記事の表示から抜く場合は$param
に下記のものを追加する。
'post__not_in' => array(get_the_ID()),
また、ランダムで記事を表示する場合はさらに$Param
に下記を追加する。
'orderby' => 'rand',