wpdocs.sourceforge.jp/テンプレートタグ/query_posts
(日本語まじりのURLだとうまくリンクが投稿できないんですね、上記をコピペしてアクセスしてください)
category__not_inを使うとできそうです。
taikikenさんありがとうございます。
早速、チャレンジしてみましたのですが、どうもうまくいきません。
カテゴリー6だけ非表示にしたかったのですが、
月別アーカイブページから確かにカテゴリー6は消えたのですが、
表示がうまく行きません。
例えば、以下のコードで10月の記事のアーカイブを表示しても、
11月や12月の記事も表示されてしまいます。
何かこれを直す方法を教えていただけると幸いです。
よろしくお願いします。
現在のarchive.phpのコードは以下のようになっております。
///////////////////////////////////////////////////////////////////////////////////
<?php get_header(); ?>
<div id=”content_box”>
<!– Beggining of “content_box” –>
<div id=”news_cotainer”>
<?php if (have_posts()) : ?>
<?php //$post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
<?php /* If this is a category archive */ if (is_category()) { ?>
<span class=”.title”><?php echo single_cat_title(); ?></span>
<?php /* If this is a monthly archive */ } elseif (is_month() ) { ?>
<span class=”.title”><?php the_time(‘F Y’); ?></span>
<?php query_posts(array(‘category__not_in’ => array(6))); ?>
<?php } ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”entry”>
<span class=”title”><?php the_title(); ?></span>
<span class=”date”><?php the_time(‘n.j.Y’) ?></span>
<p class=”tagged”>Tag:<?php the_category(‘ · ‘) ?></p>
<div class=”btntops”><!– Beggining of “btntops” –>
<span>Back to Top</span>
</div>
</div>
<?php endwhile; ?>
<?php endif; ?>
<?php posts_nav_link(‘ | ‘,’next’,’previous’); ?>
</div>
//////////////////////////////////////////////////////////////////////////////////
<?php query_posts(array(‘category__not_in’ => array(6))); ?>
デフォルトのクエリがセットされている変数$query_stringを展開しないといけません。
archive.phpだと下記のような文字がはいていると思います。
year=YYYY&monthnum=MM
これを
“year”=>YYYY,”monthnum”=>MM
のような配列に変換しarray(‘category__not_in’ => array(6))へ追加すると良いと思います。
コードの例示ができなくてごめんなさい。
taikikenさん
何度もありがとうございます。
見当違いの質問をしていたらすみません。
archive.php内に”year=YYYY&monthnum=MM”を、
見つける事ができなかったのですが、
他に方法はありますでしょうか。
何度もすみません。
暗黙の変数(?)とでも言うのでしょうか。
archive.phpのループは
query_posts($query_string)
として作られている、と考えてください。
単純に
echo $query_string;
とすれば確認できます。
taikikenさん
何度もありがとうございます。
すみません、色々試してみたのですがやはり解決できませんでした。
お手数だとは思いますが、もしお時間があればコードを表示していただけると幸いです。
何度もすみません。
$q_list = explode(“&”,$query_string);
$q_date = array();
foreach($q_list as $val){
$datas = explode(“=”,$val);
$q_date[] = $datas[0];
}
$new_array = array(“year”=>$q_date[0],”monthnum”=>$q_date[1],”category__not_in”=>array($catID));
query_posts($new_array);
決めうちで展開してます。
もっと美しいコードがあると思いますが・・・
taikikenさん
本当にありがとうございます。
無事解決する事ができました。
何度もありがとうございまいた。
もうちょっと何とかならないかと思い、コアのソースを見てみました。
$wp_query->query_vars
にクエリ用の配列がセットされているようです。
$query_array = $wp_query->query_vars;
$query_array[‘category__not_in’] = array($catID);
query_posts($query_array);
で良いみたいです。