IDEA HACK
コンテンツ
  • ブログ
IDEA HACK
IDEA HACK
コンテンツ
  • ブログ
  1. IDEA HACK
  2. ブログ
  3. WordPress
  4. WordPress 5.5でページネーションができなくなった場合の原因と対処法

WordPress 5.5でページネーションができなくなった場合の原因と対処法

2020-10-16 2020-10-16
KAZU

 WordPressを使ったクライアントのサイトの1つで、「WordPress 5.5に更新した後にページネーションが効かなくなった」という不具合が報告され、調査した結果、コアの仕様変更による物だったので共有しておきます。

カスタムページネーションが効かない

 WordPressがコアで用意している下記のページ上の(というよりはメインクエリの)(一例)デフォルトページネーションは影響を受けません。

  • アーカイブ
  • カテゴリー
  • タグ
  • ホーム
  • カスタム投稿タイプのアーカイブ
  • カスタムタクソノミーのアーカイブ

 今回問題になっているのはWP_Queryクラスを使って表示する記事リストに用意するカスタムページネーションです。

 この問題はWordPressのコアフォーラムでも議論されており、これまではWordPressのURLクエリの1つに[page]を使うことが可能だったのですが、これができなくなったことで生じていました。

KAZU

しかも、これをリリースノートに書いてなくて大問題になりました。

HTML
www.example.com/example?page=offers&id=xxx

 このURLはクエリ文字列に[page]を使ってコンテンツの表示の制御を行っています。そのため、このやり方ではWordPress5.5からはカスタムページネーションの実装ができません。

KAZU

ちなみに、私の場合はカスタムページネーションでの問題でした。カスタムページネーションを実装する開発者はクエリに[page]を使うことがほとんどのことから、この問題に出くわす可能性が高いと言えます。

実際はカスタムページネーション独特の問題ではなく、クエリに[page]を使った実装は全て影響を受けるはずです。

解決策

 解決策は2つあります。1つは単純に[page]のクエリを変えて、リライトルールを書き換える方法です。これは、機能の作り直しにもつながりますし、場合によってはパーマリンクを変えなければならず、SEO対策も面倒かもしれません。

 そこで、別の解決方法を見つけました。

WordPress
function pre_handle_404($preempt, $wp_query) {
    if (isset($wp_query->query['page']) && $wp_query->query['page']) {
        return true;
    }

    return $preempt;
}
add_filter( 'pre_handle_404', 'pre_handle_404', 10, 2 );

 このコードを読み込んでください。今回の問題は、WordPressコアが[page]クエリがついている時、開発者の動作を無視してリダイレクト処理を行う実装を追加したのが原因です。これを解除し、WordPress 5.4以前の状態に戻します。

 これは、WordPressコアの新しいルールを拒否することに繋がるので、ベストプラクティスとは言えませんが、WordPressコアが今後のリリースで、[page]クエリを使った新しい機能を実装しない限りは安全と言えます。

WordPress デバック
投稿者
KAZU
「Webデザインとプログラミングを独学 → 独自プロダクトとサブスクリプションサービスの構築 → 学習内容をコースとして提供」を繰り返しながら企業でも働く兼業ディベロッパーです。

関連記事

WordPressにソーシャルボタンを追加する際に便利な4つのプラグイン
2021-01-08 WordPress
WordPressのログインURLを変更してログインのフローをハッカーが予測できないようにカスタマイズする方法
2021-01-06 WordPress
WordPressにGoogleのreCAPTCHA認証プラグインを導入し、不正ログイン対応を強化する方法
2021-01-05 WordPress
WordPressへの不正ログイン対策に役立ち、セキュリティ強化にもつながる4つの2段階認証プラグイン
2021-01-03 WordPress
WordPressでアコーディオンを実装したい時に便利な5のプラグイン
2021-01-02 WordPress
WordPress 5.5で遅延読み込みが導入されたからプラグインはもういらない?今のところ一部のプラグインの方が優秀です・・・今はね!!
2020-12-31 WordPress

関連記事

WordPressにソーシャルボタンを追加する際に便利な4つのプラグイン
2021-01-08 WordPress
WordPressのログインURLを変更してログインのフローをハッカーが予測できないようにカスタマイズする方法
2021-01-06 WordPress
WordPressにGoogleのreCAPTCHA認証プラグインを導入し、不正ログイン対応を強化する方法
2021-01-05 WordPress
WordPressへの不正ログイン対策に役立ち、セキュリティ強化にもつながる4つの2段階認証プラグイン
2021-01-03 WordPress
WordPressでアコーディオンを実装したい時に便利な5のプラグイン
2021-01-02 WordPress
WordPress 5.5で遅延読み込みが導入されたからプラグインはもういらない?今のところ一部のプラグインの方が優秀です・・・今はね!!
2020-12-31 WordPress

最新記事

Twitterのハッシュタグをつける時によく検索される人気なものを探してつける方法
Twitter
2021-01-09
WordPressにソーシャルボタンを追加する際に便利な4つのプラグイン
WordPress
2021-01-08
Twitterのベストな投稿時間とは?
ソーシャルメディア
2021-01-07
WordPressのログインURLを変更してログインのフローをハッカーが予測できないようにカスタマイズする方法
WordPress
2021-01-06
WordPressにGoogleのreCAPTCHA認証プラグインを導入し、不正ログイン対応を強化する方法
WordPress
2021-01-05

法務・ルール

  • 利用規約
  • プライバシーポリシー
  • 特定商法取引法に基づく表記

お問い合わせ

  • お問い合わせ

サービス

  • IDEA HACK
  • IDEA FACTORY

Copyright © All rights reserved by Brandia