WordPressの404エラーをカスタマイズしてみたよ

WordPress

毎日10件ほど発生しているリクエストエラー(ページが見つかりません)を救うため、404エラーページをカスタマイズしてみたよ。

ウチで使っている表示スタイル「vicuna CMS」には、標準でカッコいい404.phpが用意されています。だけどナゼか素っ気ないページが表示されるだけで、カスタマイズしたエラーページが表示されません。

今回調べてみて理由が分かったんだけど、.htaccessに適切な記述をしないと、WordPressの404エラーページに飛ばしてくれないみたい。WordPressの404に飛ばすには、.htaccessの先頭に下記のように書けば良いようです。

ErrorDocument 404 /index.php?error=404

ここまでの修正で、存在しないページのリクエスト時に404.phpが呼び出され、カスタマイズした404エラーページが表示されるようになりました。

でもまだ個別ポスト・個別ページ・アーカイブのid間違いなどでは404エラーを返さず、「該当のページを表示しようとして内容無しの真っ黒」になってしまいます。これを修正するにはarchive.php、page.php、single.phpを修正し、「< ?php get_header(); ?>」の前、つまりファイルの先頭に以下の4行を追加すると良いようです。

<?php if (!have_posts()) {
header("HTTP/1.1 404 Not Found");
include (TEMPLATEPATH . '/404.php');
return; } ?>
<?php get_header(); ?>
     :

これで該当ポストがない場合には404エラーを返し、しかもカスタマイズした404用エラーページが表示されるようになりました。

あとは404.phpを自分好みにカスタマイズすれば、「ページが見つかりません」で来た人もまっすぐ帰らず、少しはサイト内を見てくれるようになるかも知れません。参考までにウチのサイトではこんなのが表示されます。

Hinemosu – Error 404
https://www.hide10.com/404