• いつもいつもお世話になっております。
    Archives for a categoryを使用して、カテゴリ別アーカイブが無事表示され、次に行き詰ってしまいました。
    カテゴリーページに指定したカテゴリを以下のようにしたところ
    <?php query_posts(‘cat=5&posts_per_page=1,2&paged=’.$paged); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    カテゴリ1と2の記事は表示されましたが、Archives for a categoryが効かなくなり、調べたところquery_postsはダメなようです。

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    のままですと、正常に動きますので、これを利用して
    <?php if ( ! in_category(‘N’)) continue; ?>
    を追加し、NにカテゴリNOを入れましたが、なぜか記事が表示されません。
    ※<?php if ( ! in_category(‘N’)) continue; ?>で複数カテゴリ指定ができないのであれば、もともと使用できませんが。

    以下のような強引なこともしてみましたが、
    <?php
    if ( have_posts() ) : query_posts($query_string .’&cat=1,2′); while ( have_posts() ) : the_post();
    ?>
    カテゴリーは無視されました。

    何か良い方法はありますでしょうか。
    よろしくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは。
    任意のカテゴリー(この場合はカテゴリ1と2)をまとめて表示されてたいようですが、
    「カテゴリーページ」とおっしゃっている部分は、具体的にどのように作られているのですか?
    ex) 固定ページを使っている。カテゴリーアーカイブを改変している など

    それによって実装方法が異なります。

    トピック投稿者 wkkho

    (@wkkho)

    gatespace様
    いつもありがとうございます。

    category-スラッグ名.php
    を使用しております。

    よろしくお願いいたします。

    トピック投稿者 wkkho

    (@wkkho)

    お世話になっております。

    自己解決できたようなので、お知らせします。

    間違いかもしれないのですが、動いています。

    まず、
    <?php query_posts(‘cat=5&posts_per_page=1,2,3&paged=’.$paged); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    を親カテゴリのcategory-スラッグ名.phpに入れる。

    そして、子カテゴリーのcategory-スラッグ名.phpには
    <?php
    if (have_posts()) :
    while (have_posts()) : the_post();
    ?>
    を入れ、以下のように
    <?php wp_get_archives(‘type=yearly&cat=1,2,3’); ?>
    子カテゴリーすべてのIDで呼び出す。

    と、動きました。
    理由はわかりませんが。

    また、archive-スラッグ名.phpを作っても、category-スラッグ名.phpが優先されてしまうのですね。
    知りませんでした・・・。
    このあたりもかちあっていたかもしれませんので、archive-スラッグ名.phpは作成しないことにしました。

    また変な動きになるかもしれませんが、途中経過をご報告させていただきます。

    トピック投稿者 wkkho

    (@wkkho)

    記述間違いです

    <?php query_posts(‘cat=1,2,3&posts_per_page=8&paged=’.$paged); ?>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

    の間違いです。

    こんにちは。

    また、archive-スラッグ名.phpを作っても、category-スラッグ名.phpが優先されてしまうのですね。

    どのテンプレートが使われるかは、Codexのテンプレート階層を読んでみてください。
    カテゴリーアーカイブでは

    1. category-slug.php
    2. category-ID.php
    3. category.php
    4. archive.php
    5. index.php

    の順になります。

    また、query_postsでも大丈夫なのですが、is_main_queryを使う方法もありますよ。
    http://ja.forums.wordpress.org/topic/11137?replies=4

    トピック投稿者 wkkho

    (@wkkho)

    gatespace様

    ありがとうございます。階層なども理解できました。
    is_main_queryの記事を読ませていただきました。

    query_postsで呼び出し、functions.phpに
    書かれているis_main_query
    のコードを入れておくと間違いないということでしょうか?

    検索したところ、wp3.3から動くような記述がありましたが、3.14なので無理でしょうか。

    ちょっと作りこんでみます。

    query_postsで呼び出し、functions.phpに
    書かれているis_main_query
    のコードを入れておくと間違いないということでしょうか?

    いいえ違います。
    メインクエリーを改変するためにテンプレートファイルにquery_postsを記述するのなら、
    functions.php にコードを書いて pre_get_posts にフックさせた方が良い、と言う話です。

    リンクしたフォーラムの投稿でも紹介しましたが、
    元の記事では3.2以前でも対応可能なコードが紹介されています。
    3.3の新しい関数 is_main_query を使おう

    トピック投稿者 wkkho

    (@wkkho)

    gatespace様

    ありがとうございました。
    記述して試してみます。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「query_postsを使わず、カテゴリページに複数の特定カテゴリを表示したい」には新たに返信することはできません。