• 解決済 orie

    (@orie)


    こんにちは。
    query_postsを使って、カテゴリー毎に表示件数を変えようとして、ページ送りで行き詰ってしまいました…
    こちらの質問 http://ja.forums.wordpress.org/topic/4310?replies=7
    も見てみたのですが、少し違う…?ような気がしたので、改めて質問させて頂きます。

    どなたかアドバイス頂けないでしょうか?

    【やりたい仕様】
    各カテゴリーページ(アーカイブ?)の1ページあたりの表示件数を
    ・『カテゴリー1』…5件
    ・『カテゴリー2』…10件
    として、

    <<前のページ 1 2 3 … 10 次のページ>>

    のようなページネーションを表示したい。

    【現状】
    ソースはこう書きました。

    ***category-01.php***

    <?php
    query_posts($query_string . '&cat=カテゴリーID&posts_per_page=5'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
          <div class="article">
          <?php the_content();?>
          </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query();?>

    ***category-02.php***

    <?php
    query_posts($query_string . '&cat=カテゴリーID&posts_per_page=10'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
          <div class="article">
          <?php the_content();?>
          </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query();?>

    ***ページネーション部分(カテゴリー1と2共通)***

    <div class="pager">
    <?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	'total' => $wp_query->max_num_pages,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?>
    </div>

    ・カテゴリーページ1ページあたりの表示件数自体は、query_postsの指定の方が反映されている。
    ・ページ送り部分を表示させると、表示している件数とページ送りの数が合わない。
    ・ページ送り用のプラグインは使っていない。(Yuriko.Netさんのソースを拝借しました)

    記事数は各カテゴリー共に15件あるのですが、wordpress側の『表示設定』で1ページあたりの最大表示数をカテゴリー1に合わせて『5』にしてみたところ、
    ・カテゴリー1…5件表示 ページ数3
    ・カテゴリー2…10件表示 ページ数3
    となってしまいます。
    カテゴリー2は10件表示なので、分割数は2ページになってもらいたいのですが…
    3ページ目はnot foundにはなりませんが、表示する記事が足りないので<?php the_content();?>の部分には何も表示されません。

    今の所、カテゴリー1も2もwordpressの表示設定と同じ表示件数にして対処していますが…上記のようなやりたい仕様を実現する為の知識が足りず、困り果てています。
    どうかよろしくお願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • メインループ以外に(サイドバーや他の部分で)query_posts() を使っているのであれば、wp_reset_query() はページネーション部分の後に、使っていないのであれば、wp_reset_query() はいらないと思います。

    ページネーション部分の $wp_query->max_num_pages の値が、wp_reset_query() を使う事によって、元の値に戻ってしまいます。

    トピック投稿者 orie

    (@orie)

    LVP8さん、返信ありがとうございます!
    サイドバー部分にも使っていたので、ページネーションの後にwp_reset_query()を持っていったら実現できました。
    query_posts()で設定した表示件数を、ページネーションに引き継ぐ前にwp_reset_query()でリセットしてしまっていた… という解釈でいいのでしょうか。
    それならページ送りが希望通りにいくわけもないですね…
    だいぶ長い事悩んでいたので、本当に助かりました!
    これで解決済みにさせて頂きます。どうもありがとうございました!!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「query_postsを使ったカテゴリーの表示件数とページ送りのページ数がずれる」には新たに返信することはできません。