【WordPress】プラグイン無しで独自の404ページを作成する方法|子テーマで安全にカスタマイズ

WordPressサイトで独自の404エラーページを作成することで、ユーザーエクスペリエンスを向上させ、ブランドの一貫性を保つことができます。この記事では、プラグインを使用せずに子テーマをカスタマイズして独自の404ページを作成する方法を解説します。

この記事でわかること

  • 子テーマ404.phpを作成する安全な方法
  • 親テーマを直接編集してはいけない理由
  • 404ページのデザインをカスタマイズする方法
スポンサーリンク

404.phpテンプレートファイルの確認

WordPressテーマには、404エラーページを表示するための 404.php というテンプレートファイルがあります。親テーマ(例:Cocoon本体)には既に用意されていますが、直接編集してはいけません

子テーマに404.phpを作成する(重要)

親テーマのファイルを直接編集しない
親テーマ(cocoon-masterなど)のファイルを直接編集すると、テーマのアップデート時に変更内容がすべて消えてしまいます。必ず子テーマ(cocoon-child-master側に404.phpを作成してください。子テーマに同名のファイルを置くと、WordPressのテンプレート階層の仕組みにより親テーマ側の同名ファイルより優先して読み込まれます(自動的に上書きされ、親テーマ側は変更不要です)。
ファイルの配置場所:/wp-content/themes/cocoon-child-master/404.php

404.phpファイルのカスタマイズ

子テーマに 404.php を作成し、以下のコードを追加します。

cocoon-child-master/404.php:独自の404ページ
<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

        <section class="error-404 not-found">
            <header class="page-header">
                <h1 class="page-title"><?php _e( 'ページが見つかりません', 'cocoon-child-master' ); ?></h1>
            </header>

            <div class="page-content">
                <p><?php _e( 'お探しのページは削除されたか、移動した可能性があります。', 'cocoon-child-master' ); ?></p>
                <p><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php _e( 'ホームページに戻る', 'cocoon-child-master' ); ?></a></p>
            </div>
        </section>

    </main>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

このコードを使って、ページが見つからない場合のメッセージやナビゲーションリンクを設定します。

CSSでスタイリング

次に、404.php の見た目を整えるために、子テーマのCSSファイル(style.css)にスタイルを追加します。

cocoon-child-master/style.css:404ページのスタイル
.error-404 {
    text-align: center;
    padding: 50px;
}

.error-404 .page-title {
    font-size: 2em;
    color: #ff0000;
}

.error-404 .page-content {
    font-size: 1.2em;
    color: #333;
}

関連する404ページのカスタマイズ

404ページに検索キーワードを提案する機能を追加すると、離脱防止にさらに効果的です。詳しくは404ページで検索キーワードを提案する機能を追加する方法で解説しています。

よくある質問(FAQ)

QWordPressの404ページをカスタマイズするには?
A子テーマ(cocoon-child-master)に404.phpファイルを作成するだけでカスタマイズできます。子テーマに配置することで、親テーマの404.phpより優先して読み込まれます。
Q404ページにサイト内検索フォームを表示するには?
A404.phpにget_search_form()を呼び出すだけで検索フォームが表示されます。よく見られる記事やカテゴリーリストも合わせて表示するとユーザーの離脱を防げます。
Q特定のURLパターンに対してカスタム404ページを表示するには?
Atemplate_redirectフックでis_404()を確認し、条件に応じて別のテンプレートを読み込む処理を追加します。通常の404.phpのカスタマイズだけで対応できないケースで使います。

まとめ

  • 必ず子テーマに配置cocoon-child-master/404.php
  • 避ける:親テーマ(cocoon-master)の直接編集(アップデートで消える)
  • 仕上げ:CSSでデザインを整え、検索フォームや関連記事も表示するとより親切

プラグインを使用せずに独自の404ページを作成することで、ユーザーにより良い体験を提供し、ブランドの一貫性を保つことができます。