大阪のホームページ制作会社 株式会社TREVO
技術ブログ

複数のタクソノミーを指定して記事一覧を表示

2021.06.01.

WordPress

投稿

twitter Facebook Pocket LINE はてブ

株式会社TREVOの月額制ホームページ制作サービス
PR

投稿タイプで3つ以上のタクソノミーを指定していて、記事上2つの同じタクソノミーに所属している記事一覧を表示する方法です。
指定したタームの記事情報を取得する方法は見つけられたのですが、タクソノミー毎に指定する方法を見つける事が出来なかったので紹介します。

もっとスマートにする方法もあると思うのですが、汎用性を考えてこの状態で置いておきます。

タクソノミーを二つ指定

「〇〇〇」はタクソノミー名1
「●●●」はタクソノミー名2

term_varを増やす事で、3つ、4つのタクソノミーを指定出来る様になります。
増やす場合は、「$term_var = get_the_terms( $post->ID, ‘〇〇〇’ );」とarrayのセットを増やすだけです。

「posts_per_page」で表示件数を指定
「post_type」は投稿タイプを指定します。「post」の所に投稿タイプスラッグを入れる事も可能
「relation」の「AND」はすべてに該当する、「or」はいずれかに該当する

<?php
  $term_var = get_the_terms( $post->ID, '〇〇〇' );
  $term_var2 = get_the_terms( $post->ID, '●●●' );
  $postQuery = new WP_Query();
  $param = array(
    'posts_per_page' => '4',
    'post_type' => 'post',
    'paged' => $paged,
	'post__not_in' => array(get_the_ID()),
    'tax_query' => array(
      'relation' => 'AND',
        array(
          'taxonomy' => '〇〇〇',
          'field' => 'slug',
          'terms' => $term_var[0]
        ),
        array(
          'taxonomy' => '●●●',
          'field' => 'slug',
          'terms' => $term_var2[0]
        )
      )
  );
  $postQuery->query($param);
?>

<?php if( $postQuery->have_posts() ) :?>
<?php while( $postQuery->have_posts() ):$postQuery->the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

タクソノミーを一つ指定してタームを一つ指定

「〇〇〇」はタクソノミー名
「●●●」はタクソノミー名
■■■」はターム名

<?php
  $term_var = get_the_terms( $post->ID, '〇〇〇' );
  $postQuery = new WP_Query();
  $param = array(
    'posts_per_page' => '4',
    'post_type' => 'post',
    'paged' => $paged,
	'post__not_in' => array(get_the_ID()),
    'tax_query' => array(
      'relation' => 'AND',
        array(
          'taxonomy' => '〇〇〇',
          'field' => 'slug',
          'terms' => $term_var[0]
        ),
		array(
          'taxonomy' => '●●●',
          'field' => 'slug',
          'terms' => '■■■'
        )
      )
  );
  $postQuery->query($param);
?>

<?php if( $postQuery->have_posts() ) :?>
<?php while( $postQuery->have_posts() ):$postQuery->the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

大阪のホームページ制作会社TREVOでは、ホームページ制作に関する情報を掲載しています。最短2日で仮サイトを公開するサービスやSEO対策に特化したホームページ制作、オリジナルホームページデザイン、ライティング、リスティング広告、WEBマーケティングなどのサービスをご紹介しています。

twitter Facebook Pocket LINE はてブ