べんりワザ・WordPressのテンプレートと投稿の取得

子テーマの作り方(最小構成)

テーマの更新でカスタマイズが消えるのを防ぐ子テーマ。style.cssとfunctions.phpの2枚だけで作る手順、親CSSの正しい読みこみ方、テンプレートの上書きルールをまとめました。

配布テーマをカスタマイズするなら、まず子テーマです。親テーマを直接編集すると、テーマの更新で変更がすべて消えます。子テーマなら変更点だけを別フォルダに置けるので、更新しても残ります。

必要なのは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レベルでカスタマイズする」ときが、子テーマの出番です。

テーマ開発企業サイトのテーマを作ろうテーマそのものを自作したいときはテーマ開発コースへ

まとめ

  1. 子テーマは親テーマの更新でカスタマイズを失わないための仕組み
  2. 最小構成はstyle.cssのヘッダーにTemplate: 親のフォルダ名。関数を足すならfunctions.php
  3. 崩れたら親CSSをwp_enqueue_style()で読みこむ@importは使わない)
  4. テンプレートは上書き、functions.phpは追加。関数名には接頭辞を付けて衝突を避ける

先に子テーマを用意しておけば、「更新できないサイト」になるのを防げます。

よくある質問

子テーマは何のために作るのですか?
親テーマを直接編集すると、テーマの更新で変更が上書きされて消えます。子テーマに変更点だけを置けば、親テーマを更新しても自分のカスタマイズが残ります。
子テーマの最低限のファイルは何ですか?
style.css1枚だけで動きます(ヘッダーコメントにTemplate:で親テーマのフォルダ名を書く)。親のCSSを読みこんだり関数を足したい場合はfunctions.phpも作ります。
子テーマを有効化したらデザインが崩れました
親テーマのCSSが読みこまれていない状態です。functions.phpでwp_enqueue_scriptsフックを使い、親のstyle.cssをwp_enqueue_style()で読みこんでください。@importでの読みこみは表示が遅くなるため非推奨です。
子テーマのfunctions.phpは親を上書きしますか?
上書きしません。親と子の両方が読みこまれます(子が先)。テンプレートファイル(single.phpなど)は同名を置くと子が優先されて上書きになります。