• 解決済 heppoko

    (@heppoko)


    『the_posts_pagination』を使ってページネーションを表示させています。

    しかし次のページがなくても、設定しているクラス名などが出力されてしまうため、
    表示させたくないボーダーとかが出てしまうという状況になっています。

    別のところにそのボーダーを設定するとかの手段もあるのですが、
    必ずしもそれで解決できないこともでてきます。

    そこで次ページの有無を判断する手段なんてあるのだろうかと調べてみたら、
    キーワードが悪いのか全くヒットしませんでした。

    記事の有無を判断する「get_previous_post()/get_next_post()」は分かるのですが、
    ページネーションでのページの有無を判断する条件分岐は不可能なのでしょうか?

    ご教授いただければ幸いです。よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 通常は、グローバル変数 $wp_query のプロパティ max_num_pages にアーカイブが何ページあるかというデータを保持しています。

    関数リファレンス/WP Query プロパティ

    $wp_query->max_num_pages

    で取得できますので確認してみてください。

    次のページがあるかどうかは、このページ数と、get_query_var( ‘paged’ ) で得られる現在の表示ページ数の比較で判定可能です。

    トピック投稿者 heppoko

    (@heppoko)

    回答に書かれてあったことをもとにして調べ始めたものの、
    当初は一向に答えが見えませんでした。

    しかし別件で気になっていたことの答えが見つかり、
    そちらをまず実現させようとあれこれしておりました。

    そうしているうちに、あれ?これを使えばページ数の比較が出来るのではないか?
    と思って苦戦はしましたが何とか実現することが出来ました。

    添削をしていただけることを願いつつ、
    どなたかの役に立てばと言うことも含めてソースを掲載させていただきます。

    function show_page_number_s() {
      global $wp_query;
    
      $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
      $max_page = $wp_query->max_num_pages;
    
      if ($paged < $max_page) {
        $args = array (
          'prev_text' => '<',
          'next_text' => '>',
          'show_all'  => false,
          'mid_size'  => 1,
        );
        echo the_posts_pagination( $args );
      }
    }

    読み違えていたと思いますが、

    次のページがなくても

    とは、3ページ目を表示しているときに、4ページ目があるかどうかではなく、1ページしかない(つまり2ページ目がない)ということでしょうか。

    その場合であれば、if の条件式は

    $max_page != 1

    が適切で、上記で提示いただいたコードだと最終のページでページネーションが表示されなくなり、前のページに戻れなくなってしまいます。

    トピック投稿者 heppoko

    (@heppoko)

    添削ありがとうございましたw

    返信前、自分で確認した時にはなぜか最終ページにもナビが出ていたので、
    表示されていたはずなんだけどと改めてみたら表示されておらず…
    ご指摘通り修正しましたら表示されました。

    重ね重ねありがとうございました!
    これでひとまず解決とさせていただきますね。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「ページネーションで次ページの有無を判断する手段」には新たに返信することはできません。