カスタマイズ 2024.02.05 2024.02.05
【WordPressページネーション】2ページ目が表示されない場合の対処法
WordPressのページネーションを作成したものの、いざ動かそうとすると2ページ目以降が表示されない場合があります。コード記述漏れ、ページ表示設定、パーマリンクなどの原因が考えられ、それぞれ対処することで問題が解決する可能性があります。
本記事では、このようなトラブルでよくある原因と対処法を紹介します。
目次
ページネーションがうまくいかない原因
サンプルコードをコピペしてページネーションを実装した場合、大きく分けて以下の4つの原因が考えられます。
- 必要なコードが抜けてしまって正しく動作しないケース
- 表示件数の設定が正しくないため正しく動作しないケース
- パーマリンクに問題があり正しく動作しないケース
- 404エラーで強制リダイレクトされるてしまうケース
順番に、考えられる原因と対処法を解説していきます。
【原因1 】必要なコードが抜けている
まず、必要なコードが抜けてしまっている可能性を考えます。
「the_posts_pagination()」関数であれば基本的に単体でページネーションコードを出力するため問題ありませんが、WP‗Queryを使用している場合などで、動作に必要なコードが抜けてしまい、ページネーションの2ページ目が正しく表示されないケースがあります。
以下は、トップページやカテゴリ、アーカイブ一覧ページに追加するコードの一例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php //the_posts_pagination(); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $the_query = new WP_Query(array( 'post_type' => 'post', 'posts_per_page' => 10, 'paged' => $paged )); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); //loop contents endwhile; // pagination echo '<div class="pagination">'; if ($the_query->max_num_pages > 1) { echo paginate_links(array( 'base' => str_replace(999999999, '%#%', esc_url(get_pagenum_link(999999999))), 'format' => '?paged=%#%', 'current' => max(1, $paged), 'total' => $the_query->max_num_pages, 'end_size' => '1', 'mid_size' => '2', 'prev_next' => true, 'prev_text' => '<', 'next_text' => '>', 'type' => 'list' )); } echo '</div>'; endif; wp_reset_postdata(); ?> |
記述が抜けやすいコードは以下の3つです。
コード | 内容 |
---|---|
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1 | 現在のページ番号を取得し、$pagedに設定する |
‘posts_per_page’ => 10 | 1ページあたりの表示件数を設定する |
‘paged’ => $paged | 現在のページ番号を取得する |
上記コードの記載が漏れてしまうと、プログラムが「1ページあたりの表示件数」や「現在のページ番号」を取得できないため、1ページ目は表示されるものの2ページ目から正しく表示できなくなります。
【対処方法】必要なコードを追加する
ページネーションのコードを編集したテンプレートファイルを確認し、漏れているものがあれば追加します。
【原因2】 1ページあたりの表示件数を正しく設定していない
「posts_per_page」で設定した数値よりもWordPress側で設定した「1ページに表示する最大投稿数」が大きい場合に、ページネーションが正しく動作しないことがあります。このような時には、「1ページに表示する最大投稿数」を1に設定することで不具合を回避できることがあります。
【対処方法】管理画面から「1ページに表示する最大投稿数」を1に設定する
WordPress管理画面から「設定」→「表示設定」を開きます。画面中ほどにある「1ページに表示する最大投稿数(デフォルト値=10)」を1に変更し、画面下部にある「変更を保存」をクリックします。
【原因3】パーマリンクに問題がある
上記2つに問題がない場合は、パーマリンクに問題がある可能性を考えます。
2ページ目をクリックした時に404エラーになってしまう場合は、パーマリンクで生成されるURLに問題があり正しく動作しないことがあります。このようなケースでは、パーマリンク構造を基本に戻すことで問題が解決する場合があります。
また、リダイレクトの問題で404になっているのであれば、特定のリダイレクトを無効にすることで状況が改善する可能性があります。
【対処方法1】パーマリンクを「基本」に戻す
WordPress管理画面から「設定」→「パーマリンク」を開きます。パーマリンク構造は「基本」を選び、画面下部にある「変更を保存」をクリックします。
【原因4】404エラーで強制リダイレクトされるてしまうケース
2ページ目以降のURLには遷移しているのに、404ページが表示されてしまう場合があります。これはWordPress内部で存在しないURLと認識されて、強制的に404ページにリダイレクトされている状態です。
そのため、通常のアーカイブ系テンプレート(index.php、category.php、archive.phpなど)では、あまり起こりません。カスタム投稿タイプやパーマリンク設定との相性、アーカイブ系テンプレート以外で「next_posts_link()」関数を使用している場合などがあげられます。
これらの解消方法としては、404ページへの強制リダイレクトをページネーションを実装したいテンプレートでも解除する必要があります。(アーカイブ系テンプレートではデフォルトで強制リダイレクトが解除されています)
【対処法2】functions.phpにコードを追加する
functions.phpに以下のコードを追加します。
これはWordPressに搭載されている「redirect_canonical」というフィルターフック(出力する値を変更できる機能)を使用して、指定したカスタム投稿タイプ名のリダイレクトだけを無効にするものです。
1 2 3 4 5 6 7 8 |
// define a function function disable_redirect_canonical( $redirect_url ) { if ( is_singular( 'カスタム投稿タイプ名' ) ) $redirect_url = false; return $redirect_url; } // add function to filter hook add_filter('redirect_canonical','disable_redirect_canonical'); |
条件分岐部分の『is_singular』『カスタム投稿タイプ名』の部分は、適用したいテンプレートに合わせて変更してください。
まとめ
WordPressページネーションで、2ページ目が表示されない場合は「PHPコードに問題がある」「パーマリンクに問題がある」のどちらかである可能性が高いです。
対処法を試してみて地道に問題の解消を図るのが確実な対応ですが、エラー対応には手間も時間もかかるため慣れないとかなりの負担です。
お急ぎの場合や解決方法がわからない場合には、無理にあれこれ試すよりもWordPressの知見が豊富な専門家の手を借りてしまったほうが効率的です。
WordPressサイト制作・カスタマイズなら「wp.make」にお任せ!
WordPressでのサイト制作やリニューアルを検討する時、以下のようなお悩みはありませんか?
- WordPressに詳しい制作会社に依頼したいが、どこがいいかわからない…
- セキュリティ対策をしっかりしたいが、社内にノウハウがないのでプロに任せたい…
- WordPressに最適なサーバーの選定や構築から依頼したい…
- SEO対策や高速化も考慮したサイト構築を行なってほしい…
- 制作後の保守・運用についてもサポートしてほしい…
- 今のサイトを簡単に運用できるようにしてほしい…
「wp.make」は、WordPressのプロフェッショナル集団によるWordPressサイト制作・カスタマイズサービスです。
サイトの制作だけでなく、WordPressに最適なサーバーの選定や構築といったインフラ面の支援から、SEO対策や表示スピードの高速化、高度なセキュリティ対策や制作後の保守・運用サポートまで、WordPressに関わることならあらゆるお悩みを解消いたします。
既存のお客さまからも
「コミュニケーションが取りやすく、クオリティが高い」
「WordPressのプロとして信頼感がある」
と大変ご好評をいただいています。
WordPressサイトの制作・カスタマイズをご検討されているなら、ぜひ以下からお気軽にご相談ください。
WordPress開発・カスタマイズなら 『wp.make』
全案件WordPressのみ!
株式会社e2eの『wp.make』はWordPress専門のWeb制作サービスです。
WordPress案件だけを扱っているから、技術・ノウハウ・対応力が圧倒的!
【WordPressサイト制作でよくあるお悩み】
・運用シーンが想定されておらず、更新しづらかった…
・打ち合わせで専門用語が多くてわかりづらい…
・制作後の保守には対応してくれなかった…
こんな事態になる前に、ぜひ一度、ご相談ください!
WordPressサイトを作るなら、一番WordPressに詳しいところへ!