同じ記事が重複して表示される。query_posts の条件をクリアする方法

久々のメモ記事。以下のように WordPress でスクリプトを書くと、カテゴリIDが1と3の投稿記事を、最新から10個表示することができます。

1
2
3
4
<?php query_posts('cat=1,3&showposts=10'); ?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<?php the_title('<li>','</li>'); ?>
<?php endwhile;endif; ?>

しかし以下のようにしてしまうと、同じ記事が重複して表示されてしまいますよ。

1
2
3
4
5
6
7
8
9
10
[sidebar.php]
<?php query_posts('cat=1,3&showposts=10'); ?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<?php the_title('<li>','</li>'); ?>
<?php endwhile;endif; ?>
 
[page.php]
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<?php the_title('<li>','</li>'); ?>
<?php endwhile;endif; ?>

解決方法としては、query_posts() で設定した情報をクリアしてやります。クリアするには以下の文を記事が表示し終わったところで実行します。

1
<?php query_posts($query_string); ?>

追記(2009/8/5): 以上のようにしてもダメな場合

今日 <?php query_posts($query_string); ?> を実行したのに、なぜかクリアされなくて困りました。ちなみに $query_string には、そのページの本来の設定が含まれている。これを実行してやれば、ごちゃごちゃ変えてしまった設定も綺麗になるんだけれど…。

結局正常に記事を表示させたい部分のすぐ上で、もう一度実行してしまうという方法で解決しました。趣味でやるんだったら拘りたいところですが、仕事でやってるんだったら特に拘る必要もなく、効率を考えて見えれば良いという考え方で行こう。

コメント

コメントは受け付けていません。