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’) にした方が良いですね。
スポンサーリンク
スポンサーリンク