WordPress のページネーションで1ページ目のURLを変更する方法

WordPress のページネーションで1ページ目のURLを変更する 技術ネタ

WordPress のページネーションで、1ページ目に遷移するリンクURLを変更する方法についてです。



なぜURLを変更しようと思ったのか

ある日、SearchConsole のインデックス登録状況を見ると、ステータス「除外」で ページにリダイレクトがあります と表示されており、そのメッセージをクリックしてURLを確認すると、https://return-favor.com/page/1/ となっていました。

「/page/1/」となっていることから、ページネーションのことだろうと思い、トップページ(https://return-favor.com/)から 2ページ目に遷移し、表示された2ページ目のページネーション部分の1ページ目へ遷移するリンクURLを確認すると、確かに「/page/1/」となっていました。

正しくは https://return-favor.com/ となるべきです。
なぜなら、https://return-favor.com/page/1/ にアクセスしても、https://return-favor.com/ にリダイレクトされるからです。

そのため、ページネーション(wp_link_pages)で生成される 1ページ目のリンクURLを変更できないか調べてみました。

変更方法

やり方としては、 paginate_links でURLに「/page/1/」 が付いていたら削除する方法で対応しました。
具体的には以下のコードで変更できます。

function change_paginate_links($link) {
    if (preg_match('/(.+\/)page\/1\/(.*$)/', $link, $m)) {
        return $m[1].$m[2];
    }
    return $link;
}
add_filter('paginate_links', 'change_paginate_links');

最後に

このくらい デフォルトでやってよ? と思うのは私だけでしょうか?・・・
もっと簡単なやり方があるのかもしませんが、同じような悩みがある方は参考にしてください。