【WordPress】エラーページを静的HTMLに変更する方法
静的サイト+WordPressでサイトを構築する場合の、エラーページの設定についてです。
その他の全般的なやり方についてはこちら↓を御覧ください。
WordPressの404エラーについて
完全に0から自前で構築したのでない限り、WordPressのテーマには 404.php が含まれています。
記事の削除やスラッグの変更、及びパーマリングの不具合等によるリンク切れではこの 404.php がエラーページとして表示されます。
取り立てて変更する必要もないようなページではありますが、私はこれを自作の 404.html に変えたい!!
……というわけで、静的HTML+WordPressでエラーページを作成するときの設定方法になります。
1. エラーページを用意する
WordPressの404エラーを静的HTMLの 404.html に飛ばす方法です。
404.html を置く場所はどこでも構いませんが、今回はわかりやすいように error/404.html とし、ルート直下に置きます。
ファイル構成はこんな感じ。
public_html
└ error
├ 403.html
├ 404.html
└ style.css
スタイルシートと画像は絶対パスで指定してください。
403.html も用意しておきます。
エラーページが用意できたら、ルート直下の .htaccess に以下のように追加します。
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ここまでが通常、静的HTMLサイトでエラーページを指定する際のやり方です。
2. WordPress → 静的HTML
エラーページの用意ができたらWordPressの設定です。
お馴染み functions.php に以下のコードを追加します。
function custom_404_page() {
if (is_404()) {
wp_redirect('https://example.com/error/404.html');
exit;
}
}
add_action('template_redirect', 'custom_404_page');
WordPressの 404.php にアクセスしたとき、https://example.com/error/404.html にリダイレクトさせます。
これだけでOKです。
3. 静的HTML → WordPress
では逆に、静的HTMLのエラーページをWordPressの 404.php に飛ばしたい場合です。
404.php がテーマに用意されている場合、WordPress側で特別なことをする必要はありません。
ただルート直下に置いた.htaccess に以下のように追加するだけです。
ErrorDocument 404 /wp/index.php?error=404
これで静的HTMLで404エラーが発生しても、WordPressの 404.php が表示されるようになります。
無駄にそれぞれにエラーページを用意したりせずどちらかにまとめてしまいましょう!