WordPressのカスタム投稿タイプで特定のタームの記事一覧を表示する方法

特定のタームの記事一覧を表示する方法

アサル(ASAL)です!

今回は、「WordPressのカスタム投稿タイプで指定したタームの記事一覧を表示させる方法」をご紹介していきたいと思います。

最初に、「複数あるタームから1つのタームを指定し、そのタームの記事一覧を表示する方法」を紹介し、その後に「複数あるタームから2つ以上のタームを指定し、そのタームの記事一覧を表示する方法」を紹介していきます。

また、忙しい方はコピペしてすぐに使って下さい!!!

なお、この記事では仮のカスタム投稿タイプとして、以下のカスタム投稿タイプとしますので、ご使用に合わせてタクソノミー名やターム名を変更して下さいね。

仮設定

カスタム投稿タイプ名:blog
タクソノミー名:color
ターム名(スラッグ):赤(red)青(blue)緑(green)
表示件数:5件

ではさっそく、「1つのタームを指定し、そのタームの記事一覧を表示する方法」から見ていきましょう!

1つのタームを指定して記事一覧を表示

下の画像が、僕が簡単に作ったカスタム投稿タイプで、タームの「赤(red)」を指定して記事一覧を表示した場合です。

赤(red)青(blue)緑(green)」のタームが3つある中で「赤(red)」だけの記事一覧が表示できました!

下記がソースコードになります。

尚、ここではカスタム投稿タイプがある状態でタームの一覧を表示する方法のみになるので、カスタム投稿タイプのコードやcssは割愛させて頂きます。

カスタム投稿タイプをまだ作っていないという方は、下記の記事から先にカスタム投稿タイプを作成しておいて下さい!

記事

(ソースコードにカーソルを当てると右上にコピーボタンが表示されます)

<!-- ↓1つのタームの記事一覧を表示↓ -->
<?php query_posts( array(
  'post_type' => 'blog',          //カスタム投稿名を指定
  'taxonomy' => 'color',          //タクソノミー名を指定
  'term' => 'red',                //タームのスラッグを指定
  'order' => 'DESC',              // 最新順'DESC'・古い順'ASC'
  'posts_per_page' => 5          //表示件数(-1で全ての記事を表示)
)); ?>
<?php if (have_posts()): while (have_posts()): the_post(); ?>
  <!-- カスタム投稿タイプの中身が入ります -->
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

コメントアウトにある通り、まずは 'post_type' => 'blog', で、投稿タイプの指定をします(仮カスタム投稿タイプ名でblogと指定)。

次に 'taxonomy' => 'color'では、指定したいタクソノミー名を指定します(仮タクソノミーでcolorと指定)。

その後、'term' => 'red'で、ターム名をスラッグで指定します(ここでは仮設定で「赤(red)」を指定)。

これで、タクソノミー(赤、青、緑)の中にある「赤(red)」だけの記事一覧を表示できるようになります。

最後に、お好みで'order' => 'DESC'(表示順)と'posts_per_page' => 5(表示件数)を使い、記事一覧の表示順や記事の表示件数を指定してあげましょう。

複数タームを指定して記事一覧を表示

次に「複数あるタームから2つ以上のタームを指定し、そのタームの記事一覧を表示する方法」を紹介していきます。

下の画像が、僕が簡単に作ったカスタム投稿タイプで、タームの「青(blue)緑(green)」を指定して記事一覧を表示した場合です。

ソースコードは下のようになります。

<!-- ↓複数のタームを指定して記事一覧を表示↓ -->
<?php
  $args=array(
    'tax_query' => array(
      array(
    'taxonomy' => 'color',               //タクソノミーを指定
    'field' => 'slug',
    'terms' => array( 'blue','green' )   //表示したいタームをスラッグで指定
    ),
  ),
  'post_type' => 'blog',                 //カスタム投稿名を指定
  'order' => 'DESC',                     // 最新順'DESC'・古い順'ASC'
  'posts_per_page'=> 5                  //表示件数(-1で全ての記事を表示)
);
?>
<?php query_posts( $args ); ?>
<?php if (have_posts()): while (have_posts()): the_post(); ?>
  <!-- カスタム投稿タイプの中身が入ります -->
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

記述としては、先ほどと同じくカスタム投稿タイプの指定やタクソノミーを指定していきます。

1つのタームを指定するときと違う点は、タームを複数指定する際には、'terms' => array( 'blue','green' )で自分の表示したいタームを2つ以上スラッグで記述します(ここでは仮設定で「青(blue)緑(green)」を指定)。

表示を確認すると、青(blue)緑(green)の記事一覧が表示されるようになっていますね。

最後に、表示順と表示件数をいじって終わりです!

まとめ

いかがでしたか?

僕もカスタム投稿タイプを初めて使った時には、タームを指定して記事一覧を表示する方法など、色々調べて試行錯誤していました…。

案外、カスタム投稿タイプは使いやすいんですよね〜ってことに気付かされました!

今のうちに、どんどんWordPressで出来ることの幅を広げていきましょう!

アサル(ASAL)でした!

他にもこんな記事があります!