WordPress覚書 その3 「特定のタクソノミーに属するタームの取得と記事一覧の出力とか」

tax

複数のタクソノミーが設定されている記事において、
特定のタクソノミーのタームを抜き出して同じタームを持っている記事を関連記事として一覧で表示する。
この要件で、ちょっと詰まったのでメモ。
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',