配布テーマをカスタマイズするなら、まず子テーマです。親テーマを直接編集すると、テーマの更新で変更がすべて消えます。子テーマなら変更点だけを別フォルダに置けるので、更新しても残ります。
必要なのはstyle.css1枚(+関数を足すならfunctions.php)だけです。
手順1:フォルダを作る
wp-content/themes/の中に、親テーマ名+-childのフォルダを作ります。
wp-content/themes/
├── twentytwentyfive/ ← 親テーマ(触らない)
└── twentytwentyfive-child/ ← 子テーマ(ここに作る)
├── style.css
└── functions.php手順2:style.cssを作る
先頭のコメントが設定ファイルの役割を持ちます。Template:が親テーマのフォルダ名です。
/*
Theme Name: Twenty Twenty-Five Child
Template: twentytwentyfive
Version: 1.0.0
*/
/* ここから自分のCSSを書く */
.site-title {
letter-spacing: 0.08em;
}Theme Name——管理画面に表示される名前(自由)Template——親テーマのフォルダ名。ここが最重要
手順3:親のCSSを読みこむ(functions.php)
子テーマのstyle.cssは自動で読みこまれますが、親テーマのCSSは読みこまれない場合があります。有効化してデザインが崩れたらこれが原因です。
<?php
function my_child_enqueue() {
wp_enqueue_style('parent-style', get_parent_theme_file_uri('style.css'));
}
add_action('wp_enqueue_scripts', 'my_child_enqueue');なお最近のテーマ(ブロックテーマ)は、親のスタイルを自前で読みこむ仕組みを持っていることが多く、この記述が不要な場合もあります。有効化してみて崩れたら足す、という順番で確認するのが確実です。
手順4:有効化する
管理画面の「外観」→「テーマ」に子テーマが並びます。有効化すると、中身は親テーマのまま、CSSと関数だけ自分のものが足された状態になります。
サムネイルを出したいときは、1200×900のPNGをscreenshot.pngという名前で子テーマ直下に置きます。
テンプレートの上書きルール
ここが子テーマの本番です。ファイルの種類によって「上書き」と「追加」が違います。
| ファイル | 動き |
|---|---|
single.php page.phpなどのテンプレート | 子に同名ファイルがあれば子が使われる(上書き) |
style.css | 子が読みこまれる(親は自分で読みこむ) |
functions.php | 上書きされない。親と子の両方が読みこまれる(子が先) |
templates/ parts/(ブロックテーマ) | 同名なら子が優先 |
つまり、single.phpを少し直したいときは、親からコピーして子に置き、そこを編集します。ゼロから書く必要はありません。
twentytwentyfive-child/
├── style.css
├── functions.php
└── single.php ← 親からコピーして編集functions.phpに書くときの注意
親と子の両方が読みこまれるため、同じ名前の関数を定義すると衝突してエラーになります。子テーマの関数名には接頭辞を付けます。
<?php
// ✅ 接頭辞を付けて衝突を避ける
function mychild_add_excerpt_support() {
add_post_type_support('page', 'excerpt');
}
add_action('init', 'mychild_add_excerpt_support');親テーマの関数を差し替えたい場合、親側がif (!function_exists('…'))で囲んでいる関数なら、子で同名の関数を先に定義することで上書きできます(子のfunctions.phpが先に読まれるため)。囲まれていない関数は、フックのremove_action()で外してから自分のものを足します。
ブロックテーマ(FSE)の子テーマ
ブロックエディタでサイト全体を編集するテーマでも、子テーマの作り方は同じです。加えてこの2つが使えます。
theme.json——色・余白・タイポグラフィの設定を子で上書きtemplates/parts/——同名のHTMLファイルを置くと子が優先
ブロックテーマの場合、簡単な見た目の調整はサイトエディターの設定だけで済むことも多いです。子テーマが必要になるのは、コードでしかできない調整をするときです。
子テーマが要らないケース
- 自作テーマを使っている——自分が唯一の作者なので、直接編集で問題なし
- CSSを少し足すだけ——「外観」→「カスタマイズ」の追加CSSで足りる(テーマ更新でも消えない)
「配布テーマをPHPレベルでカスタマイズする」ときが、子テーマの出番です。
テーマ開発企業サイトのテーマを作ろうテーマそのものを自作したいときはテーマ開発コースへまとめ
- 子テーマは親テーマの更新でカスタマイズを失わないための仕組み
- 最小構成は
style.cssのヘッダーにTemplate: 親のフォルダ名。関数を足すならfunctions.php - 崩れたら親CSSを
wp_enqueue_style()で読みこむ(@importは使わない) - テンプレートは上書き、functions.phpは追加。関数名には接頭辞を付けて衝突を避ける
先に子テーマを用意しておけば、「更新できないサイト」になるのを防げます。