このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

スゴク便利な万能タグ「query_posts」ただし…

トップページやカテゴリページで、通常のループ(whileなど)で記事を呼び出す時に、昇順/降順や特定カテゴリのみ、特定の期間など自由な条件で呼び出したくなることがあると思う(特に企業サイトやポータルサイト)。

その場合にすごく便利なタグが「query_posts」。
このタグをループの直前に置いて、引数にカテゴリ、投稿者、時期、昇順/降順、件数など指定するとその条件に該当する記事が取得され、その後のループのフォーマットに沿って、件数分表示される。

しかし、該当件数が例えば50件など大量にある場合は10件×5ページに分割したいが、引数をただ設定しただけでは「次のページへ」と分割できない。

それは「query_post」というタグが、今は何ページ目を表示しているのか、またそのページがどのカテゴリを表示しているのか、といったURLから得られる情報を無視してしまうためのようです。だから次へ次へとページを送っても現在のページ数を取得できず、同じ記事(例では最初の10件)しか表示されない。


 
その場合「$query_string」のひと言を、引数の先頭に加え、続く引数を「&」で始める。
■書式
query_posts($query_string . “&order=ASC&cat=2&…”)

■テンプレートの記述例
<?php query_posts($query_string . “&cat=2&order=ASC”); ?>
<?php if(have_posts()) : while (have_posts()) : the_post(); ?>
<div class=”post”>
<h3 class=”storytitle” id=”post-<?php the_ID(); ?>”>
<a href=”<?php the_permalink() ?>” rel=”bookmark”>
<?php the_title(); ?>
</a>
</h3>
<?php the_content(__(‘(more…)’)); ?>
</div>
<?php endwhile; else: ?>
<p>該当する記事はありません。</p>
<?php endif; ?>

これで該当記事がたくさんある場合に「次のページへ」が機能します。
いつものループに、最初のたった1行を加えるだけで自由自在に記事を呼び出せます。

ちなみに、現在のカテゴリを取得する例も下の記事に紹介されています。
$categoryvariable=$cat
と現在のカテゴリIDを変数に設定して、その後のquery_postsの引数cat=に代入すれば「現在のカテゴリ」という条件を設定できます。テンプレートを節約できますね。

■参考:
Template Tags/query posts」 WordPress Codex

↓引数はこちらで日本語で紹介されています。
query_posts」 Wptags.com

このエントリーをはてなブックマークに追加

15件のコメントがありますコメントのRSSフィード

  1. ふりっぷ より:

    古い記事へのコメントで申し訳ありません。

    これ、便利ですね。
    早速使わせていただきました。

    ただし、私の環境ではカテゴリでは問題があるようでした。
    ページ切り替えすると記事があっても表示されないようです。

  2. 宮澤 より:

    コメントありがとうございます。

    さっき、あるサイトで確認したら偶然にも「ページ切り替えすると記事があっても表示されない」現象に、あるカテゴリで遭遇しました。しかしその後、そのカテゴリのサブカテゴリを開くと次ページのリンクは機能し、最初のメインカテゴリに戻って次ページのリンクをクリックすると問題なく機能…。

    うーむ、なんでしょうねぇ?
    わかったらご報告したいと思います。

  3. Tips Community より:

    ランダムに過去記事をピックアップして表示する方法

    Popularity:0%…

  4. [...] スゴク便利な万能タグ「query_posts」ただし…【WordPressカスタマイズメモ】 (tags: wordpress) [...]

  5. [...] これだけだと、2ページ目以降もランダムに表示されてしまう。いろいろ調べてみるとどうやら $query_string . これをつけてやらないといけないみたい。 [...]

  6. [...] 参考:スゴク便利な万能タグ「query_posts」ただし… [...]

  7. [...] inkを使ったページが分割処理がうまく動作しない。 ■書式 query_posts($query_string . “&order=ASC&cat=2&…”) ≫スゴク便利な万能タグ「query_posts」ただし…【WordPressカスタマイズメモ】 [...]

  8. [...] query_postsの具体的な使用方法についてはこちらを参照してください。 なお、<?php if (have_posts()) : the_post(); ?> を使っている場合については書かれていませんが、同じように、直前にquery_posts文を加えるだけでOKです。うまくいかない場合はこちらも参考にしてみてください。 [...]

  9. [...] 「スゴク便利な万能タグ「query_posts」ただし…」 [...]

  10. [...] 多いようでかなり情報がでていたのですぐ見つかりました。 こちらの”スゴク便利な万能タグ「query_posts」ただし…”で詳しく解説されていますが、 それは「query_post」というタグが、今 [...]

  11. [...] どうも以下のページが参考になりそう WordPressカスタマイズメモ [...]

  12. [...] WordPressカスタマイズメモ:スゴク便利な万能タグ「query_posts」ただし…とてもわかりやすい解説です。 [...]

  13. [...] スゴク便利な万能タグ「query_posts」ただし…【WPCMS.jp】 [...]

コメント/質問お待ちしています

トラックバックURL:
http://wpcms.jp/166/trackback/

CATEGORY

ARCHIVE

2016年5月
« 12月    
1234567
891011121314
15161718192021
22232425262728
293031  
WordVolcano 2012 SUMMER に協賛しています: