記事内に広告が含まれています。

バージョンによっても違うWordPressの自動補完リダイレクトを停止するコード

バージョンによっても違うWordPressの自動補完リダイレクトを停止するコード wordpressでブログを作ろう
バージョンによっても違うWordPressの自動補完リダイレクトを停止するコード
この記事は約6分で読めます。
スポンサーリンク

 WordPressには、自動的にリダイレクトをする機能があり、リダイレクトの設定をして無いのに、Google Search Consoleで「ページにリダイレクトがあります。」の表示が出たり、変なページが開いたりすることがある。

スポンサーリンク
Windows10サポート終了まであとわずか

 本題に入る前に、Windows10サポート終了まであとわずか。
 皆さんはWindows11PCの準備はできていますか?
 kが今利用しているパソコンは↓。
 使い勝手いいよ。

PR

WordPressの自動補完リダイレクト機能は3つある

K
K

 WordPressの自動補完リダイレクト機能には2種類+1種類あるらしいよ。

シイちゃん
シイちゃん

 「スラッグに前方一致する記事を見つけて補完リダイレクトする」と「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」の二つのことだよね。

 あと一つは何?

K
K

 「投稿などのURLにカテゴリー名が入るサイトのカテゴリースラッグ部分の自動リダイレクト」という機能もあるんだってさ。

シイちゃん
シイちゃん

 えーと、でもうちの場合は関係ないよね。

 とりあえず、「スラッグに前方一致する記事を見つけて補完リダイレクトする」と「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」について勉強したいな。

K
K

 じゃあ、「投稿などのURLにカテゴリー名が入るサイトのカテゴリースラッグ部分の自動リダイレクト」についてはまたの機会ということで。

スポンサーリンク

「スラッグに前方一致する記事を見つけて補完リダイレクトする」とは?

シイちゃん
シイちゃん

「スラッグに前方一致する記事を見つけて補完リダイレクトする」ってどういうこと。

K
K

 このサイトを例に「スラッグに前方一致する記事を見つけて補完リダイレクトする」例を挙げてみよう。

アドレスバーに「https://wordpress.0hs.org/ABC/●●●」と打ち込んだとする。

シイちゃん
シイちゃん

「https://wordpress.0hs.org/ABC/●●●」というページは存在しないので、本来401ページが表示されるよね。

 本来は、ページが存在しないので、401が表示されるはず。

 だが、WordPressの「スラッグに前方一致する記事を見つけて補完リダイレクトする」機能は401ページを表示せず、「https://wordpress.0hs.org/×××/ABC/△▼▼」というページを表示する。

シイちゃん
シイちゃん

 え、なんでそうなるの?

 全然違うページだよね。

K
K

 二つのURLの中にある共通部分へWordPressの補完機能が反応して自動的にリダイレクトしてしまうんだ。

 この場合は「ABC」の部分に反応している。

シイちゃん
シイちゃん

 素直に401ページでよくない?

K
K

 WordPressの自動補完リダイレクト機能は「function.php」にコードを書き加えれば止めることができるよ。

スポンサーリンク

「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」とは?

 GoogleSearchConsole(サーチコンソール)で“ページにリダイレクトがあります”が出るのは大体、この「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」機能が原因になっている。

K
K

 WordPressはスラッグを変えると「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」機能がついているんだ。

シイちゃん
シイちゃん

 便利ではあるよね。

K
K

 でも、この「過去のスラッグ情報を元に現在のスラッグに補完リダイレクトする」機能って、永遠に機能し続けるんだよ。

シイちゃん
シイちゃん

 うーん、それはいいのか悪いのか…。

 微妙。

K
K

 こちらの自動補完リダイレクト機能も「function.php」にコードを書き加えれば止めることができるんだ。

スポンサーリンク

WordPressのバージョンによって自動補完リダイレクトを止めるコードが違う

シイちゃん
シイちゃん

 今、テーマファイルの「function.php」を見てみたら、「自動補完リダイレクト機能」を止めるコードが記載されてたんだ。

K
K

 それ、古いコードで、「自動補完リダイレクト機能」を止めるコードが機能していないんじゃないかな。

 一度確認してみたほうがいいよ。

 WordPressの自動補完リダイレクト機能は「function.php」にコードを書き加えれば止めることができる。

 ただし、WordPressのバージョンによって自動補完リダイレクト機能を止めるコードが違うので要注意。

K
K

 「function.php」の書き換えは、子テーマでしてね。

 書き換え前に「BackWPup」等でバックアップを取るのも忘れずに。

古い又は非推奨の自動補完リダイレクト機能を止めるコード

 以下のコードは古かったり、非推奨だったりする。

 もし、以下のコードを使っているようなら、新しいコードにした方がいいよ。

【Wordpress2.3の「スラッグに前方一致する記事を見つけて自動補完リダイレクトする」機能を止めるコード】

//Wordpress2.3の「スラッグに前方一致する記事を見つけて自動補完リダイレクトする」機能を止めるコード
function remove_redirect_guess_404_permalink( $redirect_url ) {
if ( is_404() )
return false;
return $redirect_url;
}
add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' );

【非推奨のコード】

//非推奨のコード(リダイレクトを担う関数自体を無効化する)
//remove_action('template_redirect', 'redirect_canonical');
スポンサーリンク

WordPress5.5以降の自動補完リダイレクトを止めるコード

 Wordpress5.5以降の自動補完リダイレクトを止めるコードはとても簡単。

//「スラッグに前方一致する記事を見つけて自動補完リダイレクトする」機能を止めるコード 
add_filter( 'do_redirect_guess_404_permalink', '__return_false' );
//旧スラッグからの自動補完リダイレクトを停止 
remove_action( 'template_redirect', 'wp_old_slug_redirect' );
K
K

 ちなみに昔のスラッグの情報は「Wordpress用データベース > wp_postmetaテーブル > _wp_old_slugレコード」に入ってるんだって。

 知識のある人は、phpMyAdminを使ってデータベースから_wp_old_slugレコードの情報を削除すると、データベースがすっきりしていいかも。

シイちゃん
シイちゃん

 データベースをいじるのは、大変でしょ?

K
K

「Slugs Manager」というプラグインを使っても古いスラッグの情報を削除できるらしいよ。

シイちゃん
シイちゃん

 プラグインが使えるなら、余裕がある時に試してみるといいかもね。

 

コメント

タイトルとURLをコピーしました