WordPressで複数ページにわたる投稿の存在しないページ数URLをリダイレクトしたい

…タイトルなに言ってるかわかんない(笑)

要するにこんなことありませんか?

複数ページある投稿のURL

複数ページある投稿っていうのは投稿の中で

ブロックで「続きを読む」を入れたり

HTMLタグで <!–nextpage–> って入れたりすることで長くなりがちな投稿を2ページ以上に分割した場合になります。

例えばこのブログで言うとこの記事

この記事は4ページに分割しています。

でも、5ページ目がないのにURLで指定した場合どうなるでしょう…

あ、普通にもとのURLに遷移された…あれw

通常は戻るみたい…ですね。あまり問題にならないのはそうゆうこと?

戻らない・・・場合、例えば /5 のままとかの場合、有効かもしれないコードがこれ。

※functions.php 等に追加記述する想定です。

function redirect_canonical_url(){
  if( !is_page() ) return;

  $http = is_ssl() ? 'https' : 'http' . '://';
  $request_url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];  
  $canonical_url = get_the_permalink();

  // 取得したパーマリンク(本来のURL)とリクエストされたURLが相違する場合、取得したパーマリンクへリダイレクト
  if ( $canonical_url !== $request_url ) {
    wp_redirect( $canonical_url, 301 );
    die();
  }
}
add_action( 'template_redirect', 'redirect_canonical_url' );

説明

パーマリンク=canonical_url は
本当に5ページ目がある場合は
https://blog.gti.jp/post-6701/5
であるのに対し、本当は5ページ目が存在しない場合、リクエストURLとは別に
<link rel=”canonical” href=”https://blog.gti.jp/post-6701/”>
ってなってます。
それを利用し、相違した場合は「本来のURL」=パーマリンクにリダイレクトするようにします。

本当に5ページ目があればそのページのままで
なければ 本来のページにリダイレクト…

という処理を行います。

こういう問題があるサイトがあったんだけど…

ホントはなにか不具合がほかにある??

かもしれないけど…

この記事が気に入ったら
いいね ! しよう

Twitter で