2026年9月7日
2026年9月7日
WordPressのテーマのfooter.phpを子テーマでオーバーライドする手順
親テーマの footer.php を子テーマのフォルダに同じ名前でコピーすると、WordPress は親テーマの代わりに子テーマ側のファイルを読み込みます。この記事では、その仕組み、コピーして編集する具体的な手順、wp_footer() を消してしまうなどのよくある失敗、そして親テーマ更新後に気をつける点までを説明します。
対象はクラシックテーマ(PHP のテンプレートファイルで構成されたテーマ)です。ブロックテーマのフッターは仕組みが違うため、後半で別に触れます。
なぜ子テーマのファイルが優先されるのか
テンプレートの中で get_footer() が呼ばれると、WordPress は内部で locate_template() を使って footer.php を探します。このとき、まず有効化しているテーマ(子テーマ)のフォルダを探し、見つからなければ親テーマのフォルダを探します。子テーマのフォルダは get_stylesheet_directory()、親テーマのフォルダは get_template_directory() で取得できる場所です。
つまり「オーバーライド」といっても特別な設定は要りません。子テーマに同じ名前・同じ階層のファイルがあれば、それが使われます。get_footer( 'shop' ) のように名前を付けて呼ばれている場合は、footer-shop.php が探されます。
手順1:子テーマを用意して有効化する
子テーマがまだなければ、wp-content/themes/ に子テーマ用のフォルダを作り、style.css を置きます。Template: には親テーマのフォルダ名(表示名ではありません)を書きます。
/*
Theme Name: My Child Theme
Template: parent-theme-folder
*/
子テーマを有効化する前に、親テーマのカスタマイザー設定やウィジェットの配置を控えておくと安心です。テーマによっては、子テーマに切り替えるとカスタマイザーの設定が引き継がれないことがあります。作業はステージング環境で行い、本番に入れる前にファイルとデータベースのバックアップを取ってください。
手順2:親テーマの footer.php を子テーマにコピーする
親テーマのフォルダから footer.php を探し、子テーマのフォルダの直下にコピーします。FTP、サーバーのファイルマネージャー、ローカル環境のどれでも構いません。
ここで最初に中身を確認しておくことが大切です。最近のテーマでは、footer.php の中身がほとんどなく、実際のフッター部分は別ファイルに分かれていることがよくあります。
<?php get_template_part( 'template-parts/footer/site-info' ); ?>
このように get_template_part() で別ファイルを読み込んでいる場合、変えたい部分はそちらのファイルにあります。get_template_part() も子テーマを先に探すため、子テーマに template-parts/footer/site-info.php を同じ階層で作れば、その部分だけを差し替えられます。footer.php 全体をコピーするより、変更範囲が小さく済みます。
また、高機能なテーマの中には、フッターの内容をテーマ独自のフックやフッタービルダー機能で出力しているものがあります。この場合は footer.php を書き換えるより、テーマが用意した設定画面やフックを使うほうが、更新に強くなります。テーマのドキュメントを先に確認してください。
手順3:子テーマ側のファイルを編集する
よくある変更は、コピーライト表記の差し替えです。親テーマが出力しているクレジット表記を、自分のサイト名と年に変える例を示します。
<footer class="site-footer">
<p class="copyright">
© <?php echo esc_html( wp_date( 'Y' ) ); ?>
<?php echo esc_html( get_bloginfo( 'name' ) ); ?>
</p>
</footer>
<?php wp_footer(); ?>
</body>
</html>
編集するときに守りたい点が三つあります。
一つ目は wp_footer() を残すことです。この関数は </body> の直前で wp_footer フックを実行し、プラグインやテーマが登録した JavaScript、管理バーなどを出力します。消すと、ログイン時の管理バーが表示されない、フォームやスライダーが動かないといった症状が出ます。
二つ目は、header.php で開いたタグを閉じる構造を崩さないことです。多くのテーマでは、header.php で開いた <div> を footer.php で閉じています。コピー元の閉じタグを消すと、レイアウトが崩れる原因になります。
三つ目は、出力する値のエスケープです。サイト名やオプション値を表示するときは esc_html() などを通してから出力します。
手順4:子テーマのファイルが使われているか確認する
編集が反映されないときは、まず子テーマのファイルが本当に読み込まれているかを確認します。手っ取り早いのは、子テーマの footer.php に一時的に HTML コメント(例:<!-- child footer -->)を入れ、ページのソースで探す方法です。確認が終わったらコメントは削除します。
開発環境なら、Query Monitor プラグインを入れると、そのページで使われたテンプレートファイルの一覧を表示できます。子テーマ側のパスが出ていれば、オーバーライドは成功しています。
反映されない場合に多い原因は次のとおりです。
- 子テーマではなく親テーマが有効になっている
- ファイル名や配置する階層が親テーマと一致していない
- テーマが footer.php ではなく footer-xxx.php や別のテンプレートパーツを読み込んでいる
- キャッシュ系プラグインやサーバーのキャッシュに古いページが残っている
PHP の構文エラーで画面が真っ白になった場合は、FTP などで子テーマの footer.php をいったん削除するか名前を変えると、親テーマのファイルが使われて表示が戻ります。原因を調べるときは、開発環境の wp-config.php で WP_DEBUG を有効にし、エラーの行番号を確認します。
親テーマを更新したあとの注意点
オーバーライドしたファイルは、親テーマの更新を受け取りません。親テーマ側で footer.php に不具合修正や新しいフックが追加されても、子テーマのコピーは古いままです。親テーマを更新したら、新しい footer.php と子テーマ側のファイルを差分比較ツールで見比べ、取り込むべき変更がないかを確認してください。
この手間を減らすには、コピーするファイルを最小限にすることです。テキストを足すだけなら、footer.php を丸ごとコピーせず、子テーマの functions.php から wp_footer フックで出力する方法もあります。ただし wp_footer フックの出力位置は </body> の直前なので、フッターの見た目の中に組み込みたい場合はテンプレートの差し替えが必要になります。
ブロックテーマの場合
ブロックテーマにはふつう footer.php がなく、フッターは parts/footer.html というテンプレートパーツで定義されています。子テーマに同じパスでファイルを置けば差し替えられますが、通常は「外観 > エディター」からフッターのテンプレートパーツを編集するほうが簡単です。
注意したいのは、サイトエディターで一度編集したテンプレートパーツはデータベースに保存され、テーマのファイルより優先されることです。子テーマにファイルを置いても変わらない場合は、サイトエディター側の編集が残っていないかを確認し、必要ならカスタマイズを消去してテーマのファイルに戻します。(2026年10月現在)のサイトエディターでは、テンプレートパーツのメニューからこの操作ができます。
まとめ
get_footer()は子テーマのフォルダを先に探すため、同じ名前・同じ階層のファイルを置くだけでオーバーライドできます- footer.php の中身が
get_template_part()で分割されているなら、変えたいパーツのファイルだけを子テーマに作ります - 編集時は
wp_footer()と閉じタグを残し、出力値はエスケープします - 反映確認はページのソースや Query Monitor で行い、親テーマ更新後は差分を比較します
- ブロックテーマでは parts/footer.html とサイトエディターの編集内容の優先順位に注意します