query_postsで特定のカテゴリの記事を表示する[WordPressテンプレート作成#12]

Apr. 19, 2009

20090419_01

トップページにおすすめの記事として特定のカテゴリの記事を表示するということはよくあります。今回はそれを実現してみます。

デフォルトではすべてのカテゴリから管理画面で指定した件数ぶんの記事を取り出すようになっているので、ループ中で特定のカテゴリだけに絞り込む必要があります。この場合、テンプレートタグのquery_posts()を使います。query_posts()はループ中で使い、クエリを変更することができます。

コードは次のようになります。

<?php if ( have_posts() ) : query_posts('cat=4'); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>
<?php endif; ?>

これでカテゴリID「4」の記事タイトルをリンクつきで、管理画面で指定した件数ぶん表示します。これをテンプレート(index.php等)内の表示したい箇所に挿入します。

テンプレート内で表示件数を変えるときは引数showpostsに整数を指定します。

query_posts('showposts=5&cat=4')

実際には「特定カテゴリのトピックスを表示する」場合などに使えます。

トピックスを表示したら、その下にその他のカテゴリの記事を複数件ならべることもあると思います。この場合はカテゴリID「4」以外の記事ということになりますね。

新たにループをつくり次のコードを挿入します。

query_posts('showposts=10&cat=-4')

引数catの整数に「-(マイナス)」をつけると「それ以外」という意味になります。このループをquery_posts()なしで行うとトピックス部分と同じクエリになってしまうので注意が必要です。

query_posts()にはcategory__not_inという引数もあって同じことができます。この引数は配列です。category__not_inとほかの引数を同時に指定するには次のように書くと動きました。

query_posts('showposts=5&'.array('category__not_in' => array(4,10)))

コメント6

  1. 200905/2006:00 pm
    特定カテゴリーをサイドバーで表示する方法 | Masamichiのブログ

    [...] query_postsで特定のカテゴリの記事を表示する[WordPressテンプレート作成#12] [...]

  2. 201001/2703:47 pm
    《Wp》指定のカテゴリー記事だけ表示する « BrainEgg

    [...] 参考:query_postsで特定のカテゴリの記事を表示する [...]

  3. 201003/2210:18 pm
  4. 201005/2111:55 am
    WordPressで最近の投稿や特定のカテゴリ内の記事を画像付きでサイドバー表示させてみました! :WordPress|アマモ場

    [...] 付きでサイドバー表示する方法として、参考にさせていただいたサイトは、http://scianto.net/archives/2009/04/19230142.php です。(感謝!) (showposts=10&cat=-189 は189(カテゴリーの「料理」)以 [...]

  5. 201102/1310:57 pm
  6. 201107/3004:12 pm
    proto.zombie.jp | Portforioの記事をサイドバーに表示させました。

    [...] PAOLOG query_postsで特定のカテゴリの記事を表示する[WordPressテンプレート作成#12] WordPress の部屋 query_posts() -ポストの抽出編 [...]

コメントしてね