Pocket

トップページでよく見かけるブログの新着記事ですが、
ブログ全体の新着記事ではなくて、ニュースなど特定のカテゴリ記事だけ一覧表示したいときってありませんか?

例えば、下図のように「ニュース」「ブログ」と分けて投稿記事を表示したときなど、結構あるのではないと思います。

6-5_03

WordPressでは、特定の条件を指定して投稿記事を呼び出すquery_posts()という関数がありますので、この関数をうまく使って特定のカテゴリーに紐付けされた記事のみ表示される方法をご紹介したいと思います。

 

STEP1 特定のカテゴリIDを調べる

管理画面より、カテゴリ作成ページを開きます。
下図の右側、「編集」ボタンを押すと該当するカテゴリの編集画面に遷移するので、URLの「tag_ID」に注目をします。

0421-1

↓ 下図は、カテゴリ編集ページのURL(編集ボタンを押した後のページ)を、ブラウザで確認した画面です。

0421-2

イコール(=)の右辺がカテゴリIDになりますので、メモなどして覚えておきます。
上図の場合のカテゴリIDは、「3」ということになります。

 

STEP2 query_posts() 関数で特定のカテゴリを呼び出す

WordPressのquery_posts()関数を使ってSTEP1でメモをしたカテゴリ記事を呼び出します。
query_posts()の使い方ですが、カテゴリIDが3に紐付けされた記事リストをページ内に5件だけ表示させたい場合は、以下のような記述になります。

query_postsの括弧()で囲まれた内容ですが、cat イコール(=)の右辺がカテゴリID、
showpost イコール(=)の右辺の数字が表示させる件数になりますので、上記の場合、「カテゴリIDが3の投稿記事を、5件表示する」という意味になります。

WordPressの twentyfourteen テーマの index.php を例に、トップページへカテゴリIDが「3」の記事リストを表示させるソースコードは以下のようになります。

ポイントは、5行目のhave_posts()より前に、query_posts()を使うことです。
通常ですと、5行目のhave_posts()の箇所から、カテゴリーに関係なくすべてのブログ記事が時系列に表示されますが、
have_posts()(ループ処理より前)にquery_posts()を使って特定のカテゴリーを指定することで、特定のカテゴリーの記事だけループ処理が行われるようになります。

20140428

 

 

特定のカテゴリーを除外して表示させる場合

上記では、query_posts()を使って特定のカテゴリーに紐付けされた記事のみ表示させる方法をご紹介しましたが、
場合によっては、特定のカテゴリー記事を除外して表示させたいこともあるかと思います。

例えば、先頭の図のように、「ブログ」にはすべての投稿記事から時系列で最新記事を表示させたいが、「ニュース」カテゴリーだけは除外したいといった場合などが考えられます。

そういった場合も、query_posts()に除外したいカテゴリーを指定することで実現ができます。
除外したいカテゴリーの指定方法はとってもシンプルで、以下のように除外したいカテゴリーIDにマイナス(-)を付けるだけです!
以下の例では、カテゴリーIDが3以外の記事を表示させる方法になります。

複数のカテゴリーを除外したい場合には、カテゴリーIDをカンマ(,)区切りで指定します。
下の例では、カテゴリーIDが5と7以外の記事を表示させる例になります。

 

先頭の図のように、トップページへ「ニュース」カテゴリーとそれ以外の記事「ブログ」を分けて表示させるコードは以下のようになります。以下の例では、ニュースカテゴリーのIDが3の記事と、それ以外の記事を表示させる例になります。

 

 

 

 

スタッフ募集のお知らせ

株式会社それからデザインでは現在、エンジニア・プログラマー、デザイナー、ディレクターを募集しています。自社サービスやクライアント企業のブランディングに関わるモノづくりの現場であなたの経験を活かしてみませんか?
ご興味のある方は、下記より募集要項をご覧ください。

生きるように働く人の仕事探しサイト「日本仕事百貨」に、当社のSE・プログラマー募集の記事が掲載されました。是非ご覧ください。