サポート » 使い方全般 » 複数ループの並列方法

  • 解決済 omusubier

    (@omusubier)


    基本的な質問だと思いますが、どうぞよろしくお願いします。

    トップページに最新記事を1件大きく掲載し、
    そのあとに2件目以降を小さめのサイズで表示したいです。

    <?php query_posts(‘showposts=1&offset=0’); if (have_posts()) : while (have_posts()) : the_post(); ?>
    <article id=”big”>内容</article>
    <?php endwhile; endif; ?>
    <?php rewind_posts(); ?>
    <?php query_posts(‘showposts=5&offset=1’); if (have_posts()) : while (have_posts()) : the_post(); ?>
    <article>内容</article>
    <?php endwhile; endif; wp_reset_query(); ?>

    <?php query_posts(‘showposts=1&offset=0’); if (have_posts()) : while (have_posts()) : the_post(); ?>
    <article id=”big”>内容</article>
    <?php endwhile; endif; wp_reset_query(); ?>
    <?php $my_query = new WP_Query(‘showposts=5&offset=1’); ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <article>内容</article>
    <?php endwhile; ?>

    としたところ、どちらもトップページの体裁自体は整っていますが、
    特定のカテゴリを選択しても、そのカテゴリに該当する記事だけでなく、
    すべての記事が選択されてしまいます。

    なにが間違っているのでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    特定のカテゴリを選択しても、そのカテゴリに該当する記事だけでなく、
    すべての記事が選択されてしまいます。

    query_posts のパラメーターにカテゴリーの条件が指定されていません。
    で、この「カテゴリを選択」とは一体なんのことでしょうか?

    トピック投稿者 omusubier

    (@omusubier)

    レスありがとうございます。
    説明が下手で申し訳ありません。

    サイドバーなどから特定のカテゴリーをクリックしてcategory.phpに飛んだときに、
    選択したはずのカテゴリーだけでなく、すべての記事が表示されてしまう。

    のですが、なにがいけないのでしょうか?
    3日ほど検索したのですが、回答が見つからずここで質問させていただきました。

    答えとしては、jim912さんのご回答が全てです。
    query_posts()はメインクエリーを書き換えるものなので、再度cat=(カテゴリーのID)を指定しなければいけません。query_posts()ならオリジナルクエリを所持、ということで$query_stringを足しておけばカテゴリーの指定は不要です。

    オリジナルクエリの保持(ページングなど)

    WP_Queryの方も同様の理由から取れていません。

    そして・・・単純に「一番初めの投稿のarticleにidをつけたい」というだけなら、わざわざサブクエリーにせずとも通常のループで出来ることかと思います。

    処理的には
    ・「$wp_query->current_post === 0」だった場合(if)
    ・「 id=”big”」をつける(ifがtrueのとき)
    ・それ以外は何もつけない(ifがfalseのとき)

    これだけです。こちらの方が簡単ではないかな?と思います。

    トピック投稿者 omusubier

    (@omusubier)

    mel_chaさんの指摘でハッと気づきました。
    index.phpに原因があるものと思い込んでいましたが、
    category.phpの書き換えが必要だったのですね!!!
    飛ぶ側ではなく飛んだ側が!

    そうなると、jim912さんのアドバイスの意味が理解できます。

    この気づきで、ほかにもいろいろとある難点が解決できそうです。
    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「複数ループの並列方法」には新たに返信することはできません。