サイトを運営していると、削除した記事の古いURLや、訪問者が打ち間違えたアドレスにアクセスされることは避けられません。そのとき表示されるのが「404 Not Found(ページが見つかりません)」ページです。ここで何の案内もないと、訪問者はそのまま離脱してしまいます。
Apuraには、検索フォームとホームへ戻るボタンを備えた404ページが標準で用意されています。
この記事では、その仕組みを確認したうえで、文言の変更・子テーマでのレイアウト編集・パンくず表示の切り替えまで、段階的にカスタマイズする方法を解説します。
Apuraの404ページに標準で備わっている機能
Apuraの404ページは、テーマ内の 404.php というテンプレートファイルで表示が組み立てられています。存在しないURLにアクセスがあると、WordPressが自動的にこのテンプレートを呼び出します。
標準では次の要素が表示されます。
- 見出し(標準の文言は「Oops! That page can’t be found.」)
- 案内文(検索またはホームへの移動をうながすメッセージ)
- 検索フォーム(サイト内検索)
- 「Go to Homepage(ホームへ戻る)」ボタン
つまり、Apuraの404ページは「行き止まり」ではなく「次の行動への案内板」として設計されています。訪問者が探していた情報にたどり着けるよう、検索とトップページへの導線が最初から用意されているわけです。
もうひとつ覚えておきたいのが、404ページはサイドバーを表示しないという仕様です。Apuraは404の表示時に自動でサイドバーを非表示にし、本文エリアを広く使います。そのため、サイドバーのレイアウト設定を気にせず、ページ中央のメッセージに集中してもらえます。
404ページの見出し文言を変更する(フィルターで差し替え)
「Oops! That page can’t be found.」という見出しを、サイトのトーンに合わせて日本語に変えたい場合があります。Apuraでは、この見出しを apura_404_title というフィルターフックで差し替えられるように設計されています。プラグインや子テーマの functions.php に次のコードを追加してください。
<?php
/**
* 404ページの見出し文言を変更する。
*
* @param string $title 標準の見出しテキスト。
* @return string 変更後の見出しテキスト。
*/
function mychild_custom_404_title( $title ) {
return __( 'お探しのページは見つかりませんでした', 'apura-child' );
}
add_filter( 'apura_404_title', 'mychild_custom_404_title' );
このフィルターは見出しテキストをそのまま受け取り、戻り値で置き換える仕組みです。テーマ側で esc_html() を通して出力しているため、戻り値に余計なHTMLタグを含めない(プレーンテキストで返す)のが安全です。
子テーマで404.phpを編集して内容を自由に作り込む
見出しだけでなく「案内文を増やしたい」「人気記事へのリンクを並べたい」といった本格的なカスタマイズをしたい場合は、子テーマに 404.php を置いてテンプレートごと上書きします。子テーマのルートに 404.php があると、WordPressは親テーマのものより優先して読み込みます。親テーマのファイルは編集せず、子テーマで上書きするのが安全な方法です。
子テーマをまだ用意していない場合は、先に子テーマの作成を済ませておきましょう。手順は次の3ステップです。
- 親テーマの404.phpをコピーする
wp-content/themes/apura/404.phpを、子テーマフォルダ(例:apura-child/)の直下にコピーします。 - 内容を編集する
コピーした子テーマ側の
404.phpを開き、案内文やリンクを追記します。 - 表示を確認する
ブラウザで存在しないURL(例:
https://example.com/no-such-page/)にアクセスし、編集内容が反映されているか確認します。
最近の投稿へのリンクを追加する例
次のコードは、子テーマの 404.php に「最近の投稿」リストを追加する例です。親テーマの 404.php の .entry-content 内、ボタンの下あたりに貼り付けてください。WP_Query で最新記事を5件取得し、エスケープ処理をしたうえでリンクを出力しています。
<?php
$recent_posts = new WP_Query(
array(
'posts_per_page' => 5,
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'no_found_rows' => true,
)
);
if ( $recent_posts->have_posts() ) :
?>
<h2><?php esc_html_e( '最近の投稿', 'apura-child' ); ?></h2>
<ul>
<?php
while ( $recent_posts->have_posts() ) :
$recent_posts->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php
endwhile;
?>
</ul>
<?php
wp_reset_postdata();
endif;
the_permalink() や the_title() は内部でURLとタイトルを適切に処理して出力するWordPress標準のテンプレートタグです。ループの最後に wp_reset_postdata() を呼び出して、メインクエリの状態を元に戻している点にも注目してください。これを忘れると、ページ下部のほかの要素で投稿データがずれることがあります。
404ページのパンくずリスト表示を切り替える
Apuraはパンくずリスト(breadcrumb)を404ページにも表示するかどうかを、カスタマイザーから切り替えられます。コードを書かずに設定だけで変更できる項目です。
- WordPress管理画面で 外観 → カスタマイズ を開きます。
- パンくずリストに関する設定セクションを開き、表示対象の一覧から 「404 page」 のトグルを探します。
- トグルをオン/オフして、404ページでパンくずを表示するかどうかを切り替えます。
- 公開 ボタンを押して設定を保存します。
パンくずは「現在地」を示す機能なので、ページが存在しない404では非表示にする運用もよく選ばれます。サイトの構成に合わせて表示・非表示を選んでください。
カスタマイズ方法の使い分け
ここまで紹介した方法を、目的別に整理すると次のようになります。やりたいことの規模に合わせて選びましょう。
| やりたいこと | 方法 | 難易度 |
|---|---|---|
| 見出しの文言だけ変えたい | apura_404_title フィルター | 低 |
| 案内文やリンクを追加したい | 子テーマで 404.php を上書き | 中 |
| パンくずの表示を変えたい | カスタマイザーのトグル | 低 |
| 古いURLを別ページへ転送したい | リダイレクト専用プラグイン | 低〜中 |
なお、削除した記事の古いURLにアクセスが集中している場合は、404ページの作り込みよりも301リダイレクトで関連ページへ転送するほうが、訪問者にもSEOにも親切です。
リダイレクトはテーマの役割ではなく、専用プラグインやサーバー設定で行うのが一般的です。404ページの整備とリダイレクトは、役割の違う対策として両方を組み合わせると効果的です。
よくある質問
- 404ページにサイドバーを表示できますか?
Apuraは標準で404ページのサイドバーを非表示にし、本文エリアを広く使う仕様です。サイドバーを出したい場合は、子テーマの404.php内でサイドバー読み込みのテンプレートタグを追加するなど、テンプレート側の編集が必要になります。
- 文言を変えたのに英語のままです。
案内文や検索フォーム周りの文言は、見出し用の apura_404_title フィルターでは変わりません。これらを変えたい場合は子テーマで404.phpを上書きするか、翻訳ファイルで対応します。まずはサイトの表示言語設定が日本語になっているかも確認しましょう。
- 404ページの編集はSEOに影響しますか?
404ページ自体は「ページが存在しない」ことを正しく伝えるためのものなので、見た目を整えてもステータスコード(404)が変わるわけではありません。訪問者を別ページへ誘導して離脱を防ぐ効果はあります。なくなったページのURLを生かしたい場合は、リダイレクトで別途対応してください。
まとめ
Apuraの404ページは、検索フォームとホームへ戻るボタンを備えた「次の行動への案内板」として最初から設計されています。
文言だけを変えたいなら apura_404_title フィルター、内容を作り込みたいなら子テーマでの 404.php 上書き、パンくず表示はカスタマイザーのトグルで、と目的に応じて方法を使い分けられます。
古いURLへのアクセスにはリダイレクトも組み合わせて、訪問者を行き止まりにしないサイトを目指しましょう。