【WordPressで「特定のカテゴリに含まれている記事」を表示するときに今見ている(表示している)記事を除外したりできる「post__not_in」について】

ブログを運営されている方で、「これは配置しておかないとな!」というコンテンツはいくつかありますよね。例えばそういうコンテンツの中の1つで、「今見ているカテゴリの最新記事を表示」ってのがあると思います。

私のブログだったらこんなやつです

これはFacebookカテゴリの最新記事を5件表示しています。

それで、私の場合は「WP_Query」を使って上の様な表示をさせているんですけど、今見ている記事も含めて表示されてしまうと変ですよね。

「この記事のカテゴリの他の記事を見てほしいんだ!」って感じです。ですので、ここで「post__not_in」パラメータを使います。

前提を決めますと、こうです

  • 今見ている記事のカテゴリに含まれている他の記事を、新しいものから5件表示する
  • ただし、今見ている記事はその5件には含めない

では、見てみましょ~。

「post__not_in」パラメーターで今見ている記事を除外

私の場合は、以下のようにしています。ここでは「post__not_in」に焦点を当てています。

本題はそこですので、その他の関数なりテンプレートタグなりの説明は、ここでは割愛いたしますね。

「いや!全部理解したいわ」という場合は、

などが参考になると思います。

というわけでして、サンプルコードです。

<?php
$cat = get_the_category();
$cat = $cat[0];
$my_query = new WP_Query( array(
'cat' => $cat->cat_ID,
'posts_per_page' => '5',
'post__not_in' => array($post->ID), //今見ている記事IDを動的に設定
'offset' => '0',
'orderby' => 'date',
'order' => 'DESC'
));
//ここから先は、出力のプログラムを書く
?>

上のコードの太字の部分に注目ください。やっていることは、難しくないです。「post__not_in」の値は今見ている記事のIDを「array($post->ID)」によって、動的に設定することができ、そのIDの記事は出力させないよ、ってことにしています。

細かいことですけども、とても重要なパラメータですね。

まとめ

この「除外する」関連のパラメータは、今回書いた「post__not_in」以外にも、

  • category__not_in
  • tag__not_in

などがありますね。

詳細については、「テンプレートタグ/query posts」にサンプルコード付きでわかりやすく説明されています。

この機会に併せてご参考いただくと、「おお、なるほど」って感じでまとめて覚えられると思います。

著者:bouya Imamura