ループで特定のカテゴリの文だけを表示/除く

久しぶりに余裕ができて、ブログを少し修正した。

WordPressのループで特定のカテゴリの記事だけを表示する方法は、次のコードを使用すると、されている:

<?php query_posts('cat=1'); ?>

cat = 1は、そのカテゴリーのIDが位置する。 文の数を制限するには、次のようなコードを使用することができる。 (カテゴリIDを確認するには、 この記事を参考にしてみてください。)

<?php query_posts("showposts=5&cat=1"); ?>

ところが、上記のようなコードを使用すると、そのカテゴリの記事だけを表示されますが、いくつかの問題が発生した。 例えば文章が多く、複数のページに表示する場合は、最初のページでは、うまく動作しますが、他のページを選択すると、最初のページのみ表示される。 つまり、最近の記事だけ最初のページに表示され、以前の記事は見ることができないという問題が発生する(ページナビゲーションの問題)。

特定のカテゴリの記事を除外するには、ID番号に マイナス( - )記号を付けるとなる。

<?php query_posts('cat=-1'); ?>

若干の問題があるが、上記のコードは、多くの場合に便利に使うことができる。

もし上記のような問題がないようにするには、次のようなコードの使用も考慮してみることができる。

<?php $top_query = new WP_Query('cat=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>

そして、特定のカテゴリの記事を除外するコードでは、次のようなコードでも使用することができる。

query_posts($query_string . '&cat=-1' );

このコードの場合、ページナビゲーションの問題は発生しませんが、作り付けの記事(Sticky Post)が表示されない。


추가

上記の方法は、 WordPress テーマソースを直接編集します。 やや面倒な作業になり、後でメンテナンスも難しい場合があります。 別の方法でpre_get_postsアクションを使用する方法があります。 詳しくは「ホームページに1つのカテゴリのみ表示されるように"文を参照してください。


コメントを残す

*メールアドレスは公開されません。