wordpressページネーションで次のページへ行けなくなった。

途中でパーマリンクの設定を変更したいと思い、投稿名に変更したところペジネーションで次のページへいけなくなっていまいました。

アーカイブページのペジネーションは404にならず、topページindex.phpから2ページ目以降にいけませんでした。

パーマリンク設定を基本以外にすると、2ページ目のurlは、https://kimiita.org/page/2となり表示できなくなり、再度パーマリンク設定を基本に戻すと、https://kimiita.org/paged=2となりペジネーションが正常に動作します。基本設定以外ペジネーションで2ページ目以降にいけません。

パーマリンクの設定を変更すると/paged=2から/page/2に移動したとよとリダイレクトしているようです。お前ずっとそこに居るんや本当は。幸子騙されちゃいかん!

ということで、/page/2へリダイレクトさせないように以下のように設定しました。なにかあると大変なので、必ず子テーマで作業します。以下を子テーマのfunctions.phpにコピペします。

  1. //functions.phpに以下を記述。リダイレクトさせない。
  2. add_filter('redirect_canonical','my_disable_redirect_canonical');
  3. function my_disable_redirect_canonical( $redirect_url ) {
  4.     if ( is_archive() ){
  5.         $subject = $redirect_url;
  6.         $pattern = '/\/page\//'; // URLに「/page/」があるかチェック
  7.         preg_match($pattern, $subject, $matches);
  8.         if ($matches){
  9.         //リクエストURLに「/page/」があれば、リダイレクトしない。
  10.         $redirect_url = false;
  11.         return $redirect_url;
  12.         }
  13.     }
  14. }

index.phpにあるペジネーション部分の所に、マーカー2行を足しました。要約すると本当はここにいるから戻って来いよ。

  1. <?php endwhile;  // ?>
  2. //index.phpのペジネーションbaseとformatを足す。
  3.         <?php
  4.             the_posts_pagination( array(
  5.                 'prev_text' => __( '? Previous', 'first' ),
  6.                 'next_text' => __( 'Next ?', 'first' ),
  7.                  'base' => get_pagenum_link(1) . '%_%',
  8.                  'format' => '?paged=%#%',
  9.             ) );
  10.             ?>
最終更新日:2020/12/06