見出し画像

【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_htmlerror
          ├ 403.html
          ├ 404.htmlstyle.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 が表示されるようになります。
無駄にそれぞれにエラーページを用意したりせずどちらかにまとめてしまいましょう!

いいなと思ったら応援しよう!