サポート » 使い方全般 » 月別アーカイブから特定のカテゴリーの記事を非表示にする方法

  • 初めまして初心者なので、とても初歩的な質問だとは思いますが、ご教授いただけると幸いです。

    現在、wordpress 2.7 日本語版を使っております。

    参考書をよみながら、月別アーカイブをカスタマイズしています。
    しかし、特定のカテゴリーだけを非表示にしたいのですが、
    方法がまったくわかりません。

    なにか、アドバイスありましたらよろしくお願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • wpdocs.sourceforge.jp/テンプレートタグ/query_posts
    (日本語まじりのURLだとうまくリンクが投稿できないんですね、上記をコピペしてアクセスしてください)
    category__not_inを使うとできそうです。

    トピック投稿者 taikman

    (@taikman)

    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))へ追加すると良いと思います。

    コードの例示ができなくてごめんなさい。

    トピック投稿者 taikman

    (@taikman)

    taikikenさん 

    何度もありがとうございます。
    見当違いの質問をしていたらすみません。

    archive.php内に”year=YYYY&monthnum=MM”を、
    見つける事ができなかったのですが、
    他に方法はありますでしょうか。

    何度もすみません。

    暗黙の変数(?)とでも言うのでしょうか。

    archive.phpのループは
    query_posts($query_string)
    として作られている、と考えてください。

    単純に
    echo $query_string;
    とすれば確認できます。

    トピック投稿者 taikman

    (@taikman)

    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);

    決めうちで展開してます。
    もっと美しいコードがあると思いますが・・・

    トピック投稿者 taikman

    (@taikman)

    taikikenさん

    本当にありがとうございます。
    無事解決する事ができました。

    何度もありがとうございまいた。

    もうちょっと何とかならないかと思い、コアのソースを見てみました。
    $wp_query->query_vars
    にクエリ用の配列がセットされているようです。

    $query_array = $wp_query->query_vars;
    $query_array[‘category__not_in’] = array($catID);
    query_posts($query_array);

    で良いみたいです。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「月別アーカイブから特定のカテゴリーの記事を非表示にする方法」には新たに返信することはできません。