特定カテゴリーの記事表示とページナビ
WordPressで特定のカテゴリーや日付の記事だけ表示したい時、例えばトップページに「お知らせ」カテゴリーの記事のみ載せる場合などは、記事ループの前でテンプレートタグ「query posts」を使います。
カテゴリーの名前を「お知らせ」、そのカテゴリースラッグを「news」としていた場合。
[sourcecode language=”html”]
<?php query_posts(‘category_name=news’); ?>
[/sourcecode]
これで「お知らせ」カテゴリーのみを集めて表示していたんだけど、そうしたらちょっと困った事態になっていました。
「WordPlessでページナビゲーションを表示する」で書いたようにページナビを入れていたら、2ページ以降が表示されない。どのページをクリックしても1ページ目が出てきます。
いつものようにググッてみると、「query_posts」はそのままではページ送りが出来ない仕様らしい。でも、もちろん解決策はあります。
ひとつ目は引数の頭に「$query_string .」を加え、引数を「&」で始める。
[sourcecode language=”html”]
<?php query_posts($query_string . ‘&category_name=news’); ?>
[/sourcecode]
もうひとつは引数の後ろに「&paged=」を付け足して「’」で閉じた後にさらに「.$paged」を加える。
[sourcecode language=”html”]
<?php query_posts(‘category_name=news&paged=’ .$paged); ?>
[/sourcecode]
どちらの方法でもページナビは正常に動作しました。
この「query_posts」は複数のカテゴリーを指定したり、特定のタグを表示したり、記事の表示件数を指定したりといろいろ便利に使えます。
- WordPress 日本語:テンプレートタグ/query posts
「query_posts」タグの使い方 - WordPressカスタマイズメモ:スゴク便利な万能タグ「query_posts」ただし…
とてもわかりやすい解説です。 - WordPress.ORG フォーラム:ページ送りができません。