条件分岐タグが効かなくなる

| コメント(0) | トラックバック(0)

特定カテゴリの記事一覧などを表示させる際、

<?php query_posts('cat=8'); ?>
<?php while (have_posts()) : the_post(); ?>
//ほげほげ
<?php endwhile;?>

という風にquery_posts()を使って表示させると、条件分岐タグ(is_home()、is_category()など)の動作に影響を与えてしまいます。例えば「カテゴリID3のカテゴリページ」のサイドバーで、query_posts()を使ってカテゴリID8の記事一覧を表示させると、その行以降はis_category('8')に対してtrueが返ってきてしまいます。

それは困る、という場合は、

1.get_posts()を使ったマルチループを使う

<?php $myposts = get_posts('category=8'); ?>
<?php foreach($myposts as $post): ?>
<?php setup_postdata($post); ?>
//ほげほげ
<?php endforeach; ?>

あるいは、

2.新たにクエリを発行する

<?php $my_query = new WP_Query('cat=8'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
//ほげほげ
<?php endwhile;?>

という書き方をすれば大丈夫です。

トラックバック(0)

トラックバックURL: http://passandgo.jp/cms/mt-tb.cgi/12

コメントする

このブログ記事について

このページは、ナックルが2009年2月26日 08:43に書いたブログ記事です。

ひとつ前のブログ記事は「PHPファイルの拡張子を変更する」です。

次のブログ記事は「URLの「www」ありなしの統一」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。