wordpress

WordPressでNot Foundのときに404ページを表示せずTOPページにリダイレクトするメモ

WordPressでサイト構築をしているときに、404ページのデザインがあるときはちゃんと作りますが、デザインが無いときはTOPページへリダイレクト処理することになることが増えてきたので、そのメモです。

404.phpにリダイレクト処理を記載する

テーマに404.phpがあるときはこちら。
このブログで使用しているunderstrapも404.phpがあるので、こちらのパターンですね。
親テーマのフォルダ内にある404.phpを子テーマフォルダへコピー&ペーストで複製して編集します。

<?php
  header( "HTTP/1.1 301 Moved Permanently" ); 
  header( "location: " . home_url() );
  exit;
?>

シンプルにリダイレクト処理です。

404.phpが無いときはfunctions.phpを編集する

function is_404_to_home(){
  if( is_404() ){
    wp_safe_redirect( home_url(), 301 );
  exit();
  }
}
add_action('template_redirect', 'is_404_to_home');

同じWordPress内でのリダイレクトという想定なのでwp_safe_redirect関数を使用しています。301リダイレクトか302リダイレクトかは適時(後述の表を参考してください)。

用語メモ

wp_redirect関数 別のサイトへリダイレクトする場合に使用。
wp_safe_redirect関数 同じWordPress内へリダイレクトする場合に使用。
301リダイレクト 恒久的な転送
(サイト移転など、完全にサイトやページが移動した場合など)
302リダイレクト 一時的な転送
(メンテナンス時など)
303リダイレクト 他を参照せよ
(フォーム送信後のリダイレクトなど)