以下の情報は古くなっている部分がございます。
最新の情報は以下をご覧ください。
<WordPress の仕様>
<!-- 404.php --> <?php get_header(); ?> <div id="main"> <h2>404 Not Found(ページが見つかりませんでした)</h2> <p>指定された以下のページは存在しないか、または移動した可能性があります。</p> <p class="error_url">URL :<span><?php echo get_pagenum_link(); ?></span></p> <p>現在表示する記事がありません。よろしければ、検索ボックスにお探しのコンテンツに該当するキーワードを入力して下さい。</p> <?php get_search_form(); ?><!-- 検索フォームを表示 --> <p><a href="<?php echo home_url(); ?>">トップページへ</a></p> </div> <?php get_sidebar(); get_footer();
リクエストされたページの URL は get_pagenum_link() で取得しています。get_pagenum_link() は指定されたページ番号のリンクを取得しますが、ページ番号を指定しなければ現在のページの URL が取得できます。また取得する値はデフォルトで esc_url() によりエスケープ処理されています。
以下のように $_SERVER 変数を使って記述しても表示できます。
<?php $protocol = empty($_SERVER["HTTPS"]) ? "http://" : "https://"; echo esc_url($protocol. $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]); ?>
エラーが出ても 404.php でページが生成されない場合があるので、.htaccess に「ErrorDocument 404 /index.php?error=404」という設定を追加する。
WordPress をサブディレクトリにインストールしている場合は、「ErrorDocument 404 /サブディレクトリ名/index.php?error=404」という形で指定する必要がある。
.htaccess # BEGIN WordPress ・・・省略・・・ # END WordPress ErrorDocument 404 /index.php?error=404
また、生成するページが見つからなくても、WordPress が類似した URL のページを自動的に表示するケースもあり、その場合はエラーページは表示されない。
ローカル環境などでは、パーマリンク設定がデフォルトのままだと.htaccess ファイルが生成されない場合があるようなので、そのような場合は、デフォルト以外に変更してみると、.htaccess ファイルが生成される。
/* 存在しないページを指定された場合は 404 ページを表示する */ function redirect_404() { //メインページ・シングルページ・アーカイブ(月別)・固定ページ 以外の指定の場合 404 ページを表示する if(is_home() || is_single() || is_month() || is_page()) return; include(TEMPLATEPATH . '/404.php'); exit; } add_action('template_redirect', 'redirect_404');