WordPressで特定のカテゴリだけを非表示にする方法
スポンサーリンク
query_posts('cat=-5');
なんて便利な…。表示したくないカテゴリが複数ある時は、&でつないでいく。
query_posts('cat=-5&cat=-8');
上の例だとカテゴリID5とID8が非表示になる。で、こういう感じで。
<?php
query_posts('cat=-5&showposts=10');
while( have_posts() ){
the_post();
echo the_time(__('Y年n月j日 l G時i分') );
echo the_permalink();
echo get_the_title();
echo the_content('read more...');
}
wp_reset_query();
?>
showposts=10は10記事分表示したいってことですね。これを5記事にするならshowposts=5。
上の例とは別で、while文の中にif(in_category(‘n’)) continue;を挟む書き方もある。この場合はnの部分をカテゴリIDにする。初めは僕もそのやり方にしてたんだけど、上で紹介したやり方の方が断然いいと思う。というのは、if(in_category(‘n’)) continue;だと、showposts=’n’で指定した通りの記事数を表示するために、カウントをとらなければならないからだ。
<?php
query_posts('showposts=10');
while(have_posts()) :
the_post();
if (in_category('5')) continue;
echo '<h2><a href="';
echo the_permalink();
echo '">'. get_the_title().'</a></h2>';
echo the_content('read more...');
endwhile;
wp_reset_query();
?>
この書き方だと、showposts=10で10記事分を表示しようとしても、10記事以下しか表示されない場合がある。例えば呼び出した10記事中にカテゴリID5が2記事混じっていると、その分を飛ばすので8記事しか表示してくれない。showposts=3の時に、非表示指定したカテゴリーの記事が3記事あると、表示される記事数が0になってしまう。
<?php
query_posts('showposts=30');
count = 0;
while( have_posts() && count < 10 ) :
the_post();
if (in_category('5')) continue;
echo '<h2><a href="';
echo the_permalink();
echo '"<'. get_the_title().'</a></h2>';
echo the_content('read more...');
count++;
endwhile;
wp_reset_query();
?>
なので上のようにしてカウントをとれば、if (in_category(‘5’)) continue;でも10記事表示されるようになるんだけど、そんなことするくらいなら初めからquery_posts (‘at=-n’) にした方が良いですね。
スポンサーリンク
スポンサーリンク