サポート » 使い方全般 » 固定ページ query_postsを使用した際の分割方法

  • 解決済 giga.oikawa

    (@gigaoikawa)


    固定ページをひとつのテンプレート内で条件分岐し、qury_postsを使用し、カテゴリごとに12件ずつ投稿記事のサムネールを表示する下記のような仕様をとっています。問題なく件数を拾って表示していたのですが、
    記事数が12件以上あるもので、ページ分割するために WP Pagenavi を使用したのですが、1ページ目(12記事分)のサムネール以外の表示ができずに困っています。

    そもそも、固定ページでのpage_nav_linkやWP pagenaviを使ったページ分割は不可能なのでしょうか。カテゴリーページを利用したほうがいいのでしょうか。

    そのあたり、固定ページでのquery_postsを利用した分割表示について方法を教えていただけると助かります。

    <?php if(is_page(256)):?>
    <!–ここからループ–>
    <?php query_posts(‘cat=80&posts_per_page=12&paged=’.$paged); ?>
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <li class=”thumnail_set”>
    <p class=”thumnail” >
    “>
    <?php echo the_qf_get_thumb_one(‘num=0&width=220’); ?>

    </p>
    <p class=”thumb_t”><?php the_excerpt(); ?></p>

    <?php endwhile; endif; ?>
    <!–ループ終わり–>

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

    (@jim912)

    giga.oikawaさん

    まずは、下記2点確認して、どこが上手くいっていないか切り分けて下さい。

    1. WP Pagenaviのリンク先が正しく2ページ以降のリンクとなっているか
    2. $pagedの変数にページ数が正しく格納されているか

    jim912 様

    ご回答ありがとうございます。
    ご指示いただいた調査結果です。

    1、WP Pagenaviのリンク先が正しく2ページ以降のリンクとなっているか

    WP Pagenavi を設置した箇所の表示は、1ページ目しか選択できない状態です。

    http://s-14.jp/wordpress/?page_id=256

    ソースを見ると、やはり、次ページへのリンクがないようです。

    <div class=’wp-pagenavi’>
    <form action=”” method=”get”>
    <select size=”1″ onchange=”document.location.href = this.options[this.selectedIndex].value;”>
    <option value=”http://s-14.jp/wordpress/?page_id=256&#8243; selected=”selected” class=”current”>1</option>
    </select>
    </form>

    2.$pagedの変数にページ数が正しく格納されているか

    知識不足で申し訳ないのですが、$pagedの変数にページ数を格納(設定)する方法があるのですね?
    実際、今回、ページ分割にあたって、1ページに表示する記事(項目)数は、posts_per_page=12 として設定しているものの、分割して表示させるページ数自体を設定してはいないので、それが原因である可能性が大かもしれません。

    お手すきの際に、ご教授くださると非常に助かります。

    jim912 様

    2.$pagedの変数にページ数が正しく格納されているか

    補足です。

    WP_Pagenavi 側の設定で、10件まで分割されたページを表示させる設定にしておりますが、
    $paged の変数に、ページ数が格納されてはいないようです。

    未だに問題は解決しておりませんが、引き続き調査中です。
    query_postsの変数の頭に、$query_string.'(& を追加し、
    <?php query_posts($query_string.’&cat=80&posts_per_page=12&paged=’.$paged); ?>
    のようにもしてみたのですが、そうすると表示自体がされなくなってしまいようですね。

    要件を再度整理します。

    1, 1枚のページテンプレートを使って複数のカテゴリに別れたコンテンツを表示
    2, query_postsを利用し、
      ページidによって表示されるカテゴリコンテンツを振り分ける
    3, 1ページに表示させるコンテンツ数を posts_per_page=12とし、超えた分は
      改ページして表示させる。
    4. 改ページの表示にあたっては、WP_pagenavi を使用する。

    上記のうち、3 の12件表示までは実現していますが、
    超えた分のページ分割と、その分割されたページへのリンクが設定できていません。

    サンプルページ
    http://s-14.jp/wordpress/?page_id=256
    ※現在は、
    「メニュー women(page_id=256)をクリックして表示されるカテゴリ80の記事
    を12件ずつ表示させる。」
    というテスト中です。

    引き続きよろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    giga.oikawaさん

    拝見いたしました。
    WP Pagenaviのリンクが1ページ目しか表示されていない&&http://s-14.jp/wordpress/?page_id=256&paged=2にアクセスすると2ページ目らしきものが表示される。

    このことから、WP Pagenaviのテンプレートタグの記述位置がまずいのではないかと思います。
    WP Pagenaviのページリンク形成に必要な情報は、query_postsが行われてからはじめて得られます。逆にいうと、query_posts以前では通常の固定ページの情報しか持っていません。

    query_postsとWP Pagenaviのテンプレートタグの記述位置の関係を今一度ご確認ください。

    jim912 様

    ご指示通り、
    WP_Pagenaviの位置をquery_posts とループの記述の前に変更したら見事表示できました。

    冷静にひとつずつ検証しないと駄目ですね。
    今回は、ご教授ありがとうございました。

    精進いたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「固定ページ query_postsを使用した際の分割方法」には新たに返信することはできません。