WordPressで特定のカテゴリだけを非表示にする方法

公開
更新日
スポンサーリンク
WordPressで特定のカテゴリだけを表示したくない場合の対処。 query_postsを呼ぶとき、表示したくないカテゴリのIDにマイナスをつけて指定する。カテゴリID5を表示したくない場合はこう。
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’) にした方が良いですね。
スポンサーリンク
スポンサーリンク