サポート » 使い方全般 » カテゴリページのページング不良

  • 解決済 ya90net

    (@ya90net)


    現在カテゴリページにて記事を

    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    query_posts($query_string . '&posts_per_page=5&orderby=DESC&paged=' . $paged);
    if (have_posts()) :
      while (have_posts()) : the_post();
           //記事内容
       endwhile;
    endif;
    wp_reset_query();

    といった感じで表出しています。
    これを /page/2 -> /page/3 -> … とページングしていくと、問題が発生して困っております。
    カテゴリに該当する記事数が13件の時、3ページ目(半端な数の最終ページ)が404になってまいます。
    記事数が15件など1ページあたりの投稿数で割り切れる時は問題ないのですが、端数を含む場合は端数に当たるページが存在しないことになってしまいます。

    原因などわかりましたら是非、ご教授いただけるとありがたいです。
    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは、

    $query_string の中身を書いてください。

    global 変数ですか?

    ページナビゲーション部分が記述されていませんが?

    固定ページですよね?

    トピック投稿者 ya90net

    (@ya90net)

    こんにちは、質問見ていただきありがとうございます!
    不足部分補わせていただきます<(_ _)>
    >>$query_string
     こちらdumpしてみましたところ、
       category_name=category1%2category2
     といった感じで、カテゴリ名だけ入っていました。
     + global変数設定はしていません。

    >>ページナビゲーション部分
     作成中ページでは、ページネーションを使用せずajaxでページ内容を取得しています。
     取得の際は、
       home_url/カテゴリ名/page/ページno ( 例:xyz.com/cat1/page/5 )
     上記形式のurlを作成し、サーバへリクエスト->返ってきたページを使用しています。
     この方式でページ数を進めていき、最終ページまでたどり着くと
     残り投稿数が半端な時だけ、アクセスできず困っております…;;
     
     こちらajaxを使用せず、同様のurlをブラウザのアドレスバーに打ち込み移動しても
     同様の結果です。

    >>固定ページですよね?
     カテゴリページ内で使用中です。( category.php内)

    他にも不足情報などございましたらご指摘いただけると助かります!
    ご意見よろしくお願いいたします。

    カテゴリページ内で使用中です。( category.php内)

    category.phpなら、query_posts()は、必要ないと思いますよ。

    ajaxのページナビゲーションは、自作ですか?
    多分そのページナビゲーションに問題がありそうな気がします。

    トピック投稿者 ya90net

    (@ya90net)

    返信ありがとうございます!

    >>category.phpなら、query_posts()は、必要ないと思いますよ。
     アドバイスありがとうございます!
     こちらquery_posts()はデフォルトの表示件数と違うので、posts_per_page
     を操作するのに使用していましたが、他にもっと良い策を検討してみます。

    >> ajaxのページナビゲーションは、自作ですか?
     ajaxのページナビは https://github.com/defunkt/jquery-pjax
     上記 をクリックトリガーにて使用しています
     (無限スクロールみたいな感じです)。

     こちら指定したurlへアドレスバーを使い移動しても同じ結果なので、php側の設定に問題があるのかなと思っていたのですが、JS周りの原因なのでしょうか?

    度々質問ばかりで恐縮ですがよろしくお願いいたします。

    Codex pre_get_posts filter

    に変更して、やってみてどうですか?

    トピック投稿者 ya90net

    (@ya90net)

    アドバイスありがとうございます。pre_get_posts を使用したところ上手くいきました!

    – + 変更点 – +
    1. query_posts()の使用を廃止
    2. 下記コード追加(functions.phpへ)

    function change_query($query) {
        if ( is_admin() || ! $query->is_main_query() )
            return;
    
        if ( $query->is_category() ) {
            $query->set( 'posts_per_page', '5' );
        }
    }
    add_action( 'pre_get_posts', 'change_query' );

    この度は迅速にアドバイス頂けて本当に助かりました。
    ありがとうございました!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カテゴリページのページング不良」には新たに返信することはできません。