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リダイレクト | 他を参照せよ (フォーム送信後のリダイレクトなど) |