サポート » 使い方全般 » ページ内でのループでのページ分け

  • page1という「ページ」に、page1というページテンプレートを適用し、
    「カテゴリーID(21)の記事を1ページに3件ずつ」という条件でループさせたいのですが、

    下記のようにquery_postsを記述したところ、2ページ目以降も最初の3件が表示されてしまいます。

    query_posts($query_string.'&cat=21&posts_per_page=3');

    2ページ目以降も正常に表示するにはどうすればよろしいでしょうか?

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

    (@jim912)

    kiwさん、こんにちは。

    2ページ目以降のURLをどのように作成しているか、またその結果として、$query_stringがどのようになっているかなどにより異なる可能性はありますが、

    1. get_query_var( ‘page’ );でページ数を取得し
    2. query_postsの引数から$query_stringを削除
    3. query_postsの引数にpagedパラメータを追加、指定する値は、手順1で取得したページ数

    で正常になるのではないかと思います。

    トピック投稿者 kiw

    (@kiw)

    jim912さま いつも的確なアドバイスありがとうございます。

    以下のように変更し、うまくいきませんでした。たぶん間違っているんだと思います。

    $pag = get_query_var( ‘page’ );
    query_posts(‘cat=21&posts_per_page=3&paged=$pag’);

    paged=$pag

    paged=2

    と直接記述して試してみたところ2ページ目が表示されました。

    つまり、上のような場合、
    get_query_var( ‘page’ );
    で取得された値からページ数を抜き出してその値を$pagに代入してやればいけそうかなと思うのですが、ページ数を抜き出す方法がいまいちわかりません。。

    $pag = get_query_var( 'page' );
    query_posts('cat=21&posts_per_page=3&paged='.$pag);

    じゃ、ないですかね?

    トピック投稿者 kiw

    (@kiw)

    shokun0803さま ご指摘ありがとうございます。
    基本的なミスでした。お恥ずかしい限りです。

    get_query_var( ‘page’ );

    をechoで表示してみたのですが、中身が空でしたので、

    get_query_var( ‘page’ )

    get_query_var( ‘paged’ )
    と修正し、

    $pag = get_query_var(‘paged’);
    query_posts(‘cat=21&posts_per_page=3&paged=’.$pag);

    のように修正したら、うまくいきました。

    どうもありがとうございました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「ページ内でのループでのページ分け」には新たに返信することはできません。