WordPressのテーマファイルを直接編集したことはありますか?ヘッダーやフッターのHTML、functions.php に追加した処理——テーマを更新するたびにそれらが消えてしまい、またゼロから書き直した経験がある方は少なくないかもしれません。
その悩みを根本から解決するのが「子テーマ(チャイルドテーマ)」です。
仕組みはシンプルで、一度理解してしまえば今後のカスタマイズが格段に安全・快適になります。この記事では、子テーマの概念から実際の作り方まで、コピーして使えるコード付きで解説します。
子テーマ(チャイルドテーマ)とは?
子テーマとは、既存のWordPressテーマ(親テーマ)の機能やデザインを引き継ぎながら、変更・追加したい部分だけを上書きできる仕組みです。
WordPressは、子テーマのファイルを親テーマより優先して読み込むというルールで動いています。たとえば子テーマに header.php が存在すれば、親テーマの header.php は無視され、子テーマ側のファイルが使われます。
逆に子テーマにないファイルは、自動的に親テーマのものが使われます。
これにより、親テーマを更新しても子テーマに書いたカスタマイズは一切影響を受けません。テーマ本体のバグ修正やセキュリティアップデートを安心して適用できるようになります。

PHP直接編集よりも子テーマが断然おすすめな理由
子テーマを使わずにテーマファイルを直接編集する方法は、一見すると手っ取り早く見えます。しかし、次の3つの問題が必ず起きます。
① テーマ更新のたびに変更が上書きされる
WordPressのテーマは定期的に更新されます。セキュリティパッチや機能追加のためにアップデートすると、functions.php や style.css に加えた変更はすべて元に戻ります。更新を恐れて放置すると、今度はセキュリティリスクが高まる——まさにジレンマです。
② 元の状態に戻しにくい
テーマファイルを直接書き換えた場合、「どこを変えたか」を自分で管理しなければなりません。カスタマイズ箇所が増えると追跡が難しくなり、問題が起きたときに「何を元に戻せばいいのか」がわからなくなります。子テーマなら、子テーマを無効化するだけでカスタマイズをすべてリセットできます。
③ テーマ本体との区別がつかなくなる
「このコードはテーマ標準のもの?それとも自分で追加したもの?」という混乱が生じます。将来テーマを乗り換えたいときや、別の人がサイトを引き継ぐときに、どこを移植すべきかが判断しにくくなります。
子テーマの作り方【3ステップ】
子テーマに必要なのは、最低限2つのファイルだけです。
style.css(子テーマを定義するファイル)functions.php(PHPカスタマイズを追加するファイル。テーマによってはここで親テーマのCSSも読み込む)
FTPソフトまたはサーバーのファイルマネージャーを使って作業します。
- 子テーマ用フォルダを作成する
サーバーの
/wp-content/themes/フォルダを開き、新しいフォルダを作成します。フォルダ名は親テーマのスラッグに-childを付けた名前が一般的です。例:親テーマが
apuraであれば、apura-childというフォルダを作成します。 - style.css を作成する
作成したフォルダの中に
style.cssを新規作成し、以下の内容を記述します。Template:の値は、親テーマのフォルダ名と完全に一致させる必要があります。/* Theme Name: Apura Child Theme URI: https://apura-theme.com/ Description: Apuraの子テーマ Author: Your Name Template: apura Version: 1.0.0 */Theme Nameは任意の名前、Templateは親テーマのフォルダ名を正確に入力してください。 - functions.php を作成する
同じフォルダに
functions.phpを新規作成します。PHPカスタマイズ(フック・ショートコードなど)を追加する場所として使います。他のテーマでは、子テーマの
functions.phpに親テーマと子テーマのCSSを明示的に読み込む処理が必要なことが多いです。一般的なパターンは次のとおりです。<?php /** * 子テーマの functions.php(Apura以外のテーマ向け汎用パターン) * * 親テーマと子テーマのスタイルシートを読み込む。 */ if ( ! defined( 'ABSPATH' ) ) { exit; } add_action( 'wp_enqueue_scripts', 'my_child_enqueue_styles' ); /** * 親テーマと子テーマのスタイルシートを読み込む。 * * @return void */ function my_child_enqueue_styles() { $parent_style = 'parent-theme-style'; // 親テーマのハンドル名に合わせて変更 wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css', array(), wp_get_theme( get_template() )->get( 'Version' ) ); wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( $parent_style ), wp_get_theme()->get( 'Version' ) ); } - 子テーマを有効化する
WordPressの管理画面から「外観」→「テーマ」を開きます。一覧に子テーマが表示されていれば、「有効化」をクリックするだけで完了です。
(Apura使用時のスクリーンショット例:テーマ一覧画面に「Apura Child」が表示され、「有効化」ボタンが表示されている状態)
追加のCSSやJSをenqueueするときはfilemtimeでキャッシュ対策を
style.css 以外に独自のCSSやJavaScriptファイルを追加で読み込む場合は、functions.php から wp_enqueue_style() / wp_enqueue_script() を使います。このときバージョン番号にファイルの更新日時(filemtime())を使うと、ファイルを変更するたびにキャッシュが自動で破棄されるため、「CSSを直したのに画面が変わらない」問題を防げます。
<?php
/**
* 子テーマの追加CSSとJSを読み込む。
* バージョンに filemtime() を使い、ファイル更新のたびにキャッシュを自動更新する。
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'wp_enqueue_scripts', 'my_child_enqueue_assets' );
/**
* 追加CSS・JSをキャッシュ対策付きで読み込む。
*
* @return void
*/
function my_child_enqueue_assets() {
// 追加CSS(style.css とは別ファイルにしたい場合)
$css_path = get_stylesheet_directory() . '/custom.css';
if ( file_exists( $css_path ) ) {
wp_enqueue_style(
'my-child-custom',
get_stylesheet_directory_uri() . '/custom.css',
array(),
filemtime( $css_path ) // ファイル更新時刻をバージョンとして使用
);
}
// 追加JS
$js_path = get_stylesheet_directory() . '/custom.js';
if ( file_exists( $js_path ) ) {
wp_enqueue_script(
'my-child-custom-js',
get_stylesheet_directory_uri() . '/custom.js',
array(), // 依存スクリプトがあれば 'jquery' などを指定
filemtime( $js_path ),
true // フッターで読み込む(推奨)
);
}
}
filemtime() はファイルの最終更新時刻をUnixタイムスタンプ(例:1749823041)で返します。これがURLのクエリパラメータ(?ver=1749823041)として付与されるため、ファイルを更新するたびにURLが変わり、ブラウザやCDNのキャッシュが自動で無効化されます。
子テーマでできること・できないこと
子テーマは万能ではありません。何ができて、何ができないかを把握しておくと、カスタマイズの方針が立てやすくなります。
| 操作 | 子テーマで対応できるか |
|---|---|
| CSSの追加・上書き(style.css に記述) | ✅ できる |
| PHPのフック(アクション・フィルター)の追加 | ✅ できる |
| テンプレートファイルの上書き(header.php など) | ✅ できる(同名ファイルを子テーマに置く) |
| 親テーマの既存フックの削除・変更 | ✅ できる(remove_action / remove_filter) |
| 親テーマのコアとなるCSSを丸ごと削除する | ⚠️ 読み込み順の制御が必要、慎重に |
| 親テーマのブロックスタイルやパターンの変更 | ⚠️ テーマによって対応方法が異なる |
| 親テーマのバージョン管理(更新の適用) | ✅ 子テーマとは独立して更新できる |
CSSだけのカスタマイズなら「追加CSS」も選択肢のひとつ
デザインの微調整(フォントサイズや色、余白など)に限定するなら、子テーマを作らなくても、WordPressの「外観」→「カスタマイズ」→「追加CSS」にCSSを書く方法が手軽です。追加CSSはテーマ更新の影響を受けず、管理画面から直接編集できるため、少量のスタイル変更には適しています。
ただし、PHPコードの追加やテンプレートファイルの変更を伴うカスタマイズには子テーマが必要です。追加CSSではPHPは書けません。
Apuraで子テーマを使う場合のポイント
WordPressテーマ「Apura」も、子テーマを使ったカスタマイズに対応しています。カスタマイザーとブロックエディターでできる範囲のカスタマイズはそちらで行い、それ以上の変更が必要な場合に子テーマを活用するのが基本的な使い方です。
Apuraは、追加CSSや子テーマなしでも多くのデザイン調整がカスタマイザーから行えるように設計されています。フォント・カラー・レイアウトの主要な設定はGUIで変更できるため、CSSを書く必要がある場面は意外と少ないかもしれません。
(Apura使用時のスクリーンショット例:カスタマイザー画面でヘッダーカラーや本文フォントを変更しているパネルの様子)
どのような設定ができるかは、公式ドキュメントをご確認ください。
まとめ
子テーマは、テーマ更新に影響されない安全なカスタマイズ環境を作るための基本ツールです。ポイントを整理しておきます。
