Wordpressカスタマイズ

【WordPress】「404 Not Found」を表示しないで指定したページへリダイレクト

この記事は最終更新から2年以上経過しており、内容が古い可能性があります

ワードプレスで、URLの打ち間違いや登録の無いページを指定された時に表示される 「404 Not Found」ページ。

「指定ページ (トップページや特定のページ ) に誘導」したい!!

「見つかりません!!」なんて断言されちゃ困るっ!!!

通常のブログなら
「ページが見つかりませ~~ん。検索しなおしてね^^」
などと書かれた404ページでいいのですが。。。

LPやSP、告知サイト、コーポレートサイトでは、そういうご依頼を頂くことありますよね^^;

このページの目次
  1. 404 Not Found からリダイレクト
    1. 指定したページに移動 ( コピペOK!! )
      1. 移動元は 404ページ以外もOK
      2. 移動先はサイト内でも別ドメインでもOK
      3. 一時移動(302) or 永久移動(301)

404 Not Found からリダイレクト

普通なら「404ページや.haccess」にリダイレクト指定を入れますが、WordPress様は、安全なリダイレクトを実行してくれる関数 [ wp_safe_redirect() ] が用意されていて、とっても楽ちん^^

指定したページに移動 ( コピペOK!! )

↓コードを functions.php にコピペすればOK。

//トップページにリダイレクト
add_action( 'template_redirect', 'is404_redirect_home' );
  function is404_redirect_home() {
    if( is_404() ){ wp_safe_redirect( home_url( '/' ), 301 );
    exit();
  }
}

3行目 wp_safe_redirect()
is_404() で移動元のページ第一引数にURL第二引数にステータスコード(301)を指定します

移動元は 404ページ以外もOK

上の例では、 is_404() で404ページを指定していますが、 is_single( ‘投稿ID’ ) is_page( ‘ページID’ ) などで特定の投稿や固定ページを指定する事もできます。

移動先はサイト内でも別ドメインでもOK

上の例では、トップページに戻るよう home_url( ‘/’ ) を指定してますが、サイト内の別ページ外部サイトのurl  を指定する事も可能です。

一時移動(302) or 永久移動(301)

リダイレクトが必要な状況は様々。

  • 一時移動(302) =「只今旅行中、お急ぎの方はこちらにご連絡を」といった一時的な場合
  • 永久移動(301) =「お引越ししました~ 住所変更よろしくm(__)m」という場合

wp_safe_redirect() の 第二引数 の規定値は 302 です。

if( is_404() ){ wp_safe_redirect( home_url( ‘/’ ) ); 
のように 第二引数 を指定しなければ、302リダイレクト になります。

if( is_404() ){ wp_safe_redirect( home_url( ‘/’ ), 301 ); 
のように 第二引数 に 301 を指定する事で、301リダイレクト にできます。

ケース by ケース で、お使い下さい。

※ 301、302リダイレクトについてはググって下さいませm(__)m