WordPressの404エラーをカスタマイズしてみたよ
毎日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
ディスカッション