
WordPressでページネーションを使って記事一覧を表示していたのに、「2ページ目が表示されない」「404エラーになる」などの問題に悩まされていませんか?
本記事では、初心者でも理解できるように、WordPressで2ページ目が正しく表示されない原因とその対処法を丁寧に解説します。
ページネーションとは?2ページ目の重要性を確認しよう
ページネーションとは、記事一覧や投稿のアーカイブを複数ページに分割表示する仕組みのことです。ユーザーにとってもSEOにとっても重要な役割を担っています。
ページネーションの基本的な仕組み
WordPressでは、記事一覧を「1ページ目」「2ページ目」…と分割し、それぞれに別のURL(例:/page/2/
)が割り振られます。この仕組みにより、大量の記事を効率よく閲覧できるようになり、ページの読み込み速度も向上します。
WordPressのページネーションは内部的に、paged
というクエリパラメータを使用して現在のページ番号を判別します。このパラメータが正しく処理されないと、2ページ目以降にアクセスできなくなってしまいます。
2ページ目が表示されないと何が起きる?
ページ遷移できず記事が埋もれてしまうことで、訪問者の回遊性が下がります。検索エンジンにも不完全な構造と認識され、SEOの評価が下がる可能性があります。
特に検索エンジンのクローラーは、2ページ目以降の記事を発見できなくなるため、インデックスされない記事が増加します。これにより、せっかく作成した記事がGoogle検索結果に表示されないという深刻な問題が発生します。
ユーザー体験の観点からも、古い記事にアクセスできないことで、サイト全体の価値が低下してしまいます。
初心者が見落としがちな注意点とは?
カスタムクエリの使用やテーマの未対応など、意外と見落とされがちな落とし穴があります。原因をひとつずつ確認していきましょう。
多くの初心者が陥る問題として、テーマファイルの改造時にquery_posts()
を使用してしまうケースがあります。また、プラグインの影響でページネーションが正常に機能しなくなることも頻繁に発生します。
2ページ目が表示されない主な原因
WordPressで2ページ目にアクセスできない理由は複数あります。ここでは代表的な原因とその判別ポイントを紹介します。
パーマリンク設定が原因のケース
「数字ベース」以外のパーマリンク設定をしていると、URLの再生成がうまくいかないことがあります。管理画面でパーマリンク設定を保存し直すと解消する場合もあります。
パーマリンクの設定変更後や、WordPressの更新後によく発生する問題です。特に「投稿名」や「カスタム構造」を使用している場合、URL書き換えルールが正しく更新されないことがあります。
使用しているテーマが非対応
一部のテーマ、特に無料テーマや海外製のテーマでは、日本語環境での動作が十分にテストされておらず、ページネーション機能が適切に設計されていないことがあります。テーマのサポート情報や公式ドキュメントを確認しましょう。
古いテーマや海外製のテーマでは、日本語環境での動作が十分にテストされていない場合があります。テーマのfunctions.php
やアーカイブテンプレートで、ページネーション機能が正しく実装されているかを確認する必要があります。
query_postsの使用による干渉
テンプレートファイルでquery_posts()
を使うと、メインクエリの書き換えが正しく行われず、ページネーションが機能しない場合があります。query_posts()
はWordPressで推奨されない関数の一つで、代わりにWP_Query
やget_posts()
を使用することが推奨されています。
この関数を使用すると、WordPressの内部的なページング情報が失われ、2ページ目以降のURLが正しく生成されません。
プラグインの競合
SEO系、キャッシュ系、記事一覧カスタマイズ系のプラグインが干渉している場合があります。一時的に無効化して確認しましょう。
特に以下のプラグインで競合が発生しやすいです:
- WP Super Cache や W3 Total Cache などのキャッシュプラグイン
- Yoast SEO や All in One SEO Pack などのSEOプラグイン
- Custom Post Type UI などの投稿タイプ関連プラグイン
.htaccessファイルの問題
サーバーの.htaccess
ファイルに不適切な記述がある場合、ページネーションのURLが正しく処理されません。特に、URL書き換えルールが干渉している場合があります。
手動で.htaccess
を編集した経験がある場合は、この原因を疑ってみてください。
ページネーションを正しく機能させる設定方法
問題の原因がわかったら、次はそれぞれに対して具体的な対策を行っていきます。初心者でも実践できる方法から順に紹介します。
パーマリンクの再保存でリフレッシュ
- 管理画面の「設定」→「パーマリンク設定」を開く
- 内容を変更せずに「変更を保存」をクリック
これだけで2ページ目のURLが復旧することもあります。
この方法は、WordPressのURL書き換えルールを再生成するための最も簡単な方法です。多くの場合、この手順だけで問題が解決します。
WP_Queryの正しい使い方
カスタムクエリを使う場合、以下のようにpaged
を正しく取得する必要があります。
※このコードはアーカイブテンプレートなどで使用する想定です
$paged = get_query_var('paged') ? get_query_var('paged') : 1; $args = array( 'post_type' => 'post', 'posts_per_page' => 10, 'paged' => $paged, ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); // 記事の表示処理 endwhile; endif; wp_reset_postdata();
このコードの重要なポイントは、$paged
変数を正しく取得して、WP_Query
のパラメータに渡すことです。また、クエリ終了後は必ずwp_reset_postdata()
を呼び出してください。
ページネーションのテンプレートタグを使う
以下は、functions.php
やarchive.php
などでページナビゲーションを表示する基本コードです。
the_posts_pagination(array( 'mid_size' => 2, 'prev_text' => __('« 前へ'), 'next_text' => __('次へ »'), 'screen_reader_text' => __('記事のページング'), ));
より詳細なカスタマイズが必要な場合は、以下のような設定も可能です:
$pagination_args = array( 'mid_size' => 2, 'prev_text' => '<span class="nav-prev-text">« 前のページ</span>', 'next_text' => '<span class="nav-next-text">次のページ »</span>', 'before_page_number' => '<span class="meta-nav screen-reader-text">ページ </span>', 'after_page_number' => '<span class="meta-nav screen-reader-text"> / </span>', ); the_posts_pagination($pagination_args);
.htaccessファイルの確認と修正
.htaccess
ファイルに問題がある場合は、以下の手順で確認・修正します:
- FTPソフトでサーバーにアクセス
- WordPressのルートディレクトリにある
.htaccess
ファイルをバックアップ - ファイルを一時的に別名に変更して問題が解決するかテスト
- 解決した場合は、WordPressの管理画面でパーマリンク設定を再保存
この手順により、WordPressが自動的に正しい.htaccess
ファイルを生成します。
プラグインで簡単にページネーションを導入する方法
コードに自信がない方は、ページネーション専用のプラグインを使うのも手です。ここでは初心者におすすめの3つを**(2025年7月現在)**紹介します。
WP-PageNaviの使い方と魅力
豊富なカスタマイズが可能な人気プラグインです。インストール後にウィジェットやショートコードで簡単に設定できます。
- インストール:管理画面 → プラグイン → 新規追加
- 設定:外観 → WP-PageNavi
コード設置例:
if (function_exists('wp_pagenavi')) { wp_pagenavi(); }
WP-PageNaviの主な特徴:
- 豊富なスタイル設定オプション
- 多言語対応(日本語含む)
- カスタムCSSでのデザイン調整が可能
- 大量のページがある場合の省略表示機能
WP-Paginateの特徴と導入手順
軽量で表示スタイルもわかりやすく、初心者でも扱いやすいのが特長です。
プラグイン名 | カスタマイズ性 | 導入難易度 | 日本語対応 | 更新頻度 |
---|---|---|---|---|
WP-PageNavi | 高い | 中 | △ | 頻繁 |
WP-Paginate | 普通 | 低 | ○ | 普通 |
Simple Pagination | 低い | 低 | ○ | 普通 |
Simple Paginationプラグインの活用
最もシンプルで軽量なページネーションを実現したい場合におすすめです。設定項目が少なく、初心者でも迷うことなく使用できます。
インストール後は、テーマファイルに以下のコードを追加するだけで動作します:
if (function_exists('simple_pagination')) { simple_pagination(); }
高度なカスタマイズとトラブルシューティング
より専門的な問題解決方法や、開発者向けのカスタマイズについて解説します。
カスタム投稿タイプでのページネーション
カスタム投稿タイプを使用している場合、特別な設定が必要です。以下のコードをfunctions.php
に追加してください:
function custom_post_type_pagination_fix() { global $wp_query; if (is_post_type_archive() && $wp_query->is_main_query()) { $paged = get_query_var('paged') ? get_query_var('paged') : 1; $wp_query->set('paged', $paged); } } add_action('pre_get_posts', 'custom_post_type_pagination_fix');
AjaxベースのページネーションとSEOの関係
Ajax(非同期通信)を使用したページネーションは、ユーザー体験を向上させますが、SEO面での考慮が必要です。検索エンジンがJavaScriptを正しく解釈できない場合があるためです。
Ajax実装時の注意点:
- 通常のページネーションリンクも併用する
- History APIを使用してURLを更新する
- 検索エンジン向けのフォールバック機能を実装
デバッグとエラーログの確認方法
ページネーションの問題を特定するために、以下のデバッグ方法を活用してください:
※このコードは本番環境では削除してください
function debug_pagination_info() { global $wp_query; echo '<pre>'; echo 'Current page: ' . get_query_var('paged') . "\n"; echo 'Max pages: ' . $wp_query->max_num_pages . "\n"; echo 'Posts per page: ' . get_query_var('posts_per_page') . "\n"; echo 'Total posts: ' . $wp_query->found_posts . "\n"; echo '</pre>'; }
このコードをテンプレートファイルに一時的に追加することで、現在のページネーション状態を確認できます。
SEOとユーザー目線から見たページネーション設計
正しく表示されるだけでなく、SEOやUX(ユーザー体験)の観点からも工夫が必要です。2ページ目の表示は検索順位にも影響します。
rel=”next/prev”タグの役割
Googleにページ構成を伝えるため、ページネーションにはrel="next"
やrel="prev"
が使われます。SEO対策として明示的に設置するのも有効です。
現在のGoogle検索では、rel="next/prev"
タグは直接的なランキング要因ではありませんが、クローラーの理解を助ける役割があります。
以下のコードで実装できます:
function add_pagination_meta_tags() { global $wp_query; if (is_paged()) { $paged = get_query_var('paged'); $max_pages = $wp_query->max_num_pages; if ($paged > 1) { $prev_link = get_pagenum_link($paged - 1); echo '<link rel="prev" href="' . $prev_link . '">'; } if ($paged < $max_pages) { $next_link = get_pagenum_link($paged + 1); echo '<link rel="next" href="' . $next_link . '">'; } } } add_action('wp_head', 'add_pagination_meta_tags');
タイトルやメタディスクリプションの工夫
2ページ目以降では、title
タグやmeta description
が重複しないように調整しましょう。SEO効果が向上し、クリック率も改善します。
以下は、ページ番号を含むタイトルタグを生成する方法です:
function custom_archive_title($title) { if (is_paged()) { $paged = get_query_var('paged'); $title .= ' - ' . $paged . 'ページ目'; } return $title; } add_filter('wp_title', 'custom_archive_title');
ページ切り替えボタンのユーザビリティ
「次へ」「前へ」だけでなく、ページ番号の表示や現在位置の明示も重要です。ユーザーが迷わず移動できるようにしましょう。
効果的なページネーションデザインの要素:
- 現在のページ番号の強調表示
- 最初と最後のページへのリンク
- 省略記号(…)を使った中間ページの表示
- モバイルフレンドリーなタップ領域の確保
構造化データの活用
検索エンジンにページ構造をより明確に伝えるため、JSON-LD形式の構造化データを追加することも有効です。
function add_pagination_structured_data() { if (is_paged()) { $paged = get_query_var('paged'); $max_pages = $wp_query->max_num_pages; $structured_data = array( '@context' => 'https://schema.org', '@type' => 'CollectionPage', 'name' => get_the_title() . ' - ' . $paged . 'ページ目', 'url' => get_pagenum_link($paged), 'isPartOf' => array( '@type' => 'Collection', 'name' => get_the_title(), 'url' => get_pagenum_link(1) ) ); echo '<script type="application/ld+json">' . json_encode($structured_data) . '</script>'; } } add_action('wp_head', 'add_pagination_structured_data');
パフォーマンスとセキュリティの考慮事項
大量のページを扱う場合のパフォーマンス最適化と、セキュリティ面での注意点について解説します。
大量ページでのパフォーマンス最適化
記事数が多いサイトでは、ページネーションの処理が重くなる場合があります。以下の最適化手法を検討してください:
キャッシュの活用:
- ページネーションリンクをキャッシュする
- データベースクエリの最適化
- CDNの活用
セキュリティ対策
ページネーション機能を悪用した攻撃を防ぐため、以下の対策を実装してください:
function sanitize_pagination_input($input) { $page = absint($input); if ($page < 1) { $page = 1; } return $page; } function secure_pagination_links() { $paged = sanitize_pagination_input(get_query_var('paged')); // 以降の処理 }
まとめ



WordPressで2ページ目が表示されない原因は、パーマリンク設定・テーマ・カスタムクエリなど多岐にわたります。まずは一つずつ原因を切り分け、今回紹介した方法で対処してみてください。
最も効果的な解決策は、パーマリンク設定の再保存から始めることです。これで解決しない場合は、テーマやプラグインの影響を疑い、段階的に原因を特定していきましょう。
プラグインを活用すれば、コーディング不要でページネーションを実装できます。ユーザビリティとSEO両面での改善にもつながるので、積極的に対応していきましょう。
適切なページネーションは、サイトの使いやすさを大幅に向上させ、検索エンジンからの評価も高めます。今回の解決方法を参考に、あなたのWordPressサイトでも快適なページ遷移を実現してください。