WordPress子テーマの作り方|style.cssの書き方とつまずき対処

大きな箱と小さな箱が並ぶイラスト

※本記事にはアフィリエイト広告(PR)が含まれています。広告掲載ポリシー

WordPressの子テーマは、「Template:」に親テーマのフォルダ名を書いたstyle.cssをフォルダに入れ、zipにしてアップロードすれば作れます。functions.phpは、親テーマのCSSの読み込み方によって、必要なときだけ用意します。

子テーマの仕組みや、そもそも必要かどうかは子テーマとは?の解説記事にまとめています。この記事では、自作する手順と、つまずいたときの対処に絞って解説します。

※2026年10月11日時点で各公式サイトの記載を確認。管理画面の名称はWordPress 7.1系のものです。

目次

作る前に: 公式の子テーマがないか確認する

使っているテーマが公式の子テーマを配布しているなら、自作は不要です。SWELLとCocoonは公式の子テーマを配布しています。

テーマ公式の子テーマ入手先
SWELLSWELL CHILD購入者向け会員サイトのマイページからダウンロード
CocoonCocoon Child公式サイトで配布
OPEN CAGEのテーマストークSEなどの子テーマ公式マニュアルで配布

公式の子テーマは、開発元が親テーマに合わせて用意しているので、スタイルの読み込みなどを自分で書く必要がありません。あればそちらを使うのがおすすめです。当サイトもSWELLの子テーマ「SWELL CHILD」で運営しています。

CSSを少し調整したいだけなら、子テーマを作らずに「追加 CSS」で済む場合もあります(クラシックテーマはカスタマイザー、ブロックテーマは「外観」→「エディター」→「スタイル」)。使い方はテーマカスタマイズ入門で紹介しています。

子テーマに必要なファイルは何?

必須のファイルはstyle.cssの1つだけです。functions.phpは、親テーマや子テーマのCSSを自分で読み込む必要があるときに用意します。

子テーマに必要なファイル。style.cssは必須で、Template:で親テーマを指定し追加CSSを書く。functions.phpはCSSの読み込みやPHPの追加が必要なときだけ用意する
  • style.css:「Template:」で親テーマを指定する、子テーマの本体です。追加したいCSSもここに書きます
  • functions.php:CSSの読み込みが必要なときや、PHPで機能を足したいときに使います。親テーマのfunctions.phpを置き換えず、子と親の両方が読み込まれます(子が先)
  • 子テーマのフォルダ:半角英数で、「lightning-child」のように「親テーマ名-child」の形の名前にすると分かりやすくなります

フォルダ名に日本語やスペースは使わないでください。WordPressの公式ハンドブックは、単語をハイフンでつなぐ書き方(ケバブケース)を勧めています。

手順1: style.cssを作る

メモ帳などのテキストエディタで「style.css」という名前のファイルを作り、次のヘッダーを書いて文字コードUTF-8で保存します。例は、親テーマがLightning(フォルダ名 lightning)の場合です。

/**
 * Theme Name: Lightning Child
 * Template:   lightning
 * Version:    1.0.0
 */

/* ここから下に追加したいCSSを書きます */
項目書く内容
Theme Name管理画面に表示される子テーマの名前。自由に付けてよいが、ほかのテーマと重複しない名前にする
Template親テーマのフォルダ名。テーマの表示名ではない。子テーマにするために必ず書く
Version子テーマの版番号。手順2のコードでは、子テーマのCSSを読み込むときの版番号に使う

「Template:」の書き間違いは、子テーマ作りでよくある失敗のひとつです。たとえば表示名が「Lightning」でも、フォルダ名は「lightning」です。表示名をそのまま書かず、フォルダ名を正確に写してください。

フォルダ名は、サーバーの「wp-content/themes/」の中で確認できます。管理画面の「外観」→「テーマ」で親テーマを開き、URLの末尾「theme=○○」の部分を見る方法もあります。

手順2: 必要なときだけfunctions.phpを作る

functions.phpが要るかどうかは、親テーマがどのCSSを読み込む作りかで決まります。公式ハンドブックが示す3通りは次のとおりです。

親テーマの作りfunctions.phpやること
自分と子テーマの両方のCSSを読み込む不要子テーマ側では何もしなくてよい
自分のCSSしか読み込まない必要functions.phpで子テーマのstyle.cssを読み込む
有効なテーマ(子テーマ)のCSSしか読み込まない必要子テーマのCSSは自動で読み込まれるので、functions.phpで親テーマのstyle.cssを読み込む
functions.phpが要るかは親テーマの作りで決まる。親が自分と子テーマの両方のCSSを読み込むなら不要、自分のCSSだけなら子テーマのstyle.cssを、有効なテーマのCSSだけなら親テーマのstyle.cssをfunctions.phpで読み込む

親テーマのマニュアルに案内があれば、それに従ってください。案内がないときは、まずstyle.cssだけで有効化し、表示に問題が出てから足す、という順番でも大丈夫です。

親テーマが自分のCSSしか読み込まない場合は、子テーマのstyle.cssを読み込む次のコードを、同じフォルダの「functions.php」に書きます(ハンドブックの例と同じ形です)。

<?php
add_action( 'wp_enqueue_scripts', 'my_child_enqueue_styles' );

function my_child_enqueue_styles() {
	wp_enqueue_style(
		'my-child-style',
		get_stylesheet_uri()
	);
}

親テーマが有効なテーマのCSSしか読み込まない場合は、反対に親テーマのstyle.cssを読み込みます。

<?php
add_action( 'wp_enqueue_scripts', 'my_child_enqueue_styles' );

function my_child_enqueue_styles() {
	wp_enqueue_style(
		'my-child-parent-style',
		get_parent_theme_file_uri( 'style.css' )
	);
}

親テーマが自分のCSSも子テーマのCSSも読み込まない場合は、次のように両方をまとめて読み込みます。親テーマのstyle.cssを先に、子テーマのstyle.cssを後に読み込むコードです。

<?php
// 親テーマが自分のCSSも子テーマのCSSも読み込まない場合のコード
add_action( 'wp_enqueue_scripts', 'my_child_enqueue_styles' );

function my_child_enqueue_styles() {
	// 親テーマの style.css を読み込む
	wp_enqueue_style(
		'my-child-parent-style',
		get_parent_theme_file_uri( 'style.css' )
	);
	// 子テーマの style.css を親テーマの後に読み込む
	wp_enqueue_style(
		'my-child-style',
		get_stylesheet_uri(),
		array( 'my-child-parent-style' ),
		wp_get_theme()->get( 'Version' )
	);
}

同じ詳細度のセレクタなら後に読み込んだCSSが優先されるので、子テーマに書いたCSSで親テーマの見た目を上書きできます。最後の行の版番号には、style.cssの「Version」の値が入ります。

親テーマの作りと合わないコードを入れると、同じCSSが二重に読み込まれることがあります。また、functions.phpの末尾にPHPの閉じタグ「?>」は書かないでください(PHPだけのファイルでは閉じタグを省略するのが望ましいと、PHPの公式マニュアルにもあります)。

手順3: zipにしてアップロードし、有効化する

ファイルができたら、フォルダごとzipに圧縮して、管理画面からアップロードします。FTPソフトは必要ありません。

子テーマをアップロードする5手順。フォルダにstyle.cssを入れてzipに圧縮し、親テーマをインストールしてから「テーマのアップロード」でzipを入れ、子テーマを有効化する
  • フォルダにファイルを入れる:半角英数の名前のフォルダに、style.css(必要ならfunctions.phpも)を入れます
  • フォルダをzipに圧縮する:Windowsなら、フォルダの右クリックメニューの「圧縮 (zip 形式) フォルダー」などを使います(表示はWindowsのバージョンで異なります)
  • 親テーマを入れておく:子テーマより先に、親テーマをインストールしておきます。親テーマは有効化しなくて構いません
  • zipをアップロードする:「外観」→「テーマ」→「テーマを追加」→「テーマのアップロード」から子テーマのzipを選びます(詳しくはテーマのインストール方法)
  • 子テーマを有効化する:有効化するのは子テーマの側です。「外観」→「テーマ」で、子テーマに「有効:」と表示されていれば完了です

有効化したら、サイトを開いて表示を確かめましょう。カスタマイザーの設定はテーマごとに保存されるので、親テーマで設定していた内容は子テーマに引き継がれません。初期状態に見えたら、子テーマ側で設定し直してください。

うまくいかないときの原因と対処

よくある原因は、「Template:」の書き間違い、zipの中身の不備、親テーマのCSSの読み込みの3つです。表示されたメッセージや症状から、次の表で原因を探してください。

メッセージ・症状おもな原因対処
(「外観」→「テーマ」の画面)「親テーマが見つかりません。「○○」の親テーマをインストールしてください。」「Template:」のフォルダ名が違う、または親テーマが入っていない「Template:」と親テーマのフォルダ名を見比べる。親テーマが未インストールなら先に入れる
(zipのアップロード時)「親テーマが見つかりませんでした。この子テーマを利用する前に、親テーマ ○○ をインストールしてください。」同上同上
(zipのアップロード時)「テーマに style.css スタイルシートがありません。」「パッケージをインストールできませんでした。」zipの中にstyle.cssが見つからないファイル名がstyle.cssになっているか、フォルダごと圧縮したかを確認する
(zipのアップロード時)「テンプレートが不足しています。」で始まるメッセージstyle.cssに「Template:」の行がなく、index.phpもないヘッダーに「Template:」の行があるか、綴りが合っているかを確認する
親テーマのデザインが当たらない親テーマが自分のCSSを読み込まない作り手順2の表で親テーマの作りを確かめ、functions.phpで親テーマのstyle.cssを読み込む
子テーマのstyle.cssに書いたCSSが効かない親テーマが子テーマのstyle.cssを読み込まない作りfunctions.phpで子テーマのstyle.cssを読み込む。コピー漏れや全角スペースがないかも確認する
カスタマイザーの設定が初期状態に見える設定はテーマごとに保存される子テーマ側で設定し直す。ウィジェット・メニューも再設定が要る場合がある

WordPressは「Template:」などのヘッダーの値の前後の空白を取り除きます。それでも親テーマが見つからない場合は、全角スペースが混ざっていないか、綴りや大文字・小文字が違っていないかを確認してください。

ボルダリングジムで壁を眺める女性のイラスト

functions.phpを直すときは、本番サイトで直接書き換えるより、手元でファイルを直してアップロードし直す方が安全です。理由はテーマファイルエディターの使い方と注意点で解説しています。有効化できないとき全般の対処はテーマが有効化できないときの対処法をご覧ください。

子テーマでカスタマイズするときの書き場所

子テーマができたら、変更はすべて子テーマのファイルに書きます。やりたいことごとの書き場所は次のとおりです。

やりたいこと書く場所ポイント
CSSで見た目を変える子テーマのstyle.css同じ詳細度なら、後に読み込む子テーマのCSSが優先される
PHPで機能を足す子テーマのfunctions.php親テーマのfunctions.phpも読み込まれるので、親の関数をそのまま写さない
ページの骨組みを変える(クラシックテーマ)親テーマと同じ名前のテンプレートファイル(header.phpなど)を子テーマに置く子テーマのファイルが優先される
ページの骨組みを変える(ブロックテーマ)templates/・parts/ の .html を同じ名前で子テーマに置くパターンは同じ名前のファイルで、登録名(Slug)も同じにすると上書きできる

ブロックテーマの見た目は、おもにtheme.jsonで決まります。自分のテーマがどちらの方式かはブロックテーマとクラシックテーマの違いで見分けられます。

管理画面の「テーマファイルエディター」で編集する場合は、ファイル一覧で子テーマを選んでいるか確かめてから書き換えてください。親テーマのファイルを直接編集すると、更新のときに上書きされます。

子テーマと親テーマの更新

子テーマに書いたカスタマイズは、親テーマの更新で上書きされません。そのため、親テーマの更新を適用しやすくなります。

ろくろで器を作る男性のイラスト

ただし、親テーマの大型更新でHTMLの構造やCSSのクラス名が変わると、子テーマに書いた上書き用のCSSが効かなくなることがあります。大きな更新の後は、サイトの表示を確かめる習慣をつけましょう。

一方、自作の子テーマには更新通知は来ません。中身は自分で書いたファイルだけなので、直したいときに自分で編集します。更新の進め方はテーマ更新の正しい手順で解説しています。

よくある質問

朝の公園をジョギングする男性のイラスト

子テーマを作るのにFTPソフトは必要ですか?

必要ありません。パソコンで作ったフォルダをzipにして、管理画面の「テーマのアップロード」から入れれば完了します。FTPが要るのは、エラーで管理画面に入れなくなったときの復旧などです。

運用中のサイトに後から子テーマを導入できますか?

できます。記事や画像はテーマとは別に保存されているので、子テーマに切り替えても消えません。ただしカスタマイザーの設定はテーマごとに保存されるため、切り替えた後に再設定が必要です。

子テーマのstyle.cssと「追加 CSS」はどちらを使えばいいですか?

数行のCSSの調整だけなら「追加 CSS」で足ります。functions.phpにPHPを書く、テンプレートファイルを上書きするといった作業をするなら、子テーマを作りましょう。

ブロックテーマでも同じ手順で作れますか?

style.cssに「Template:」を書いてアップロードする手順は同じです。見た目はおもにtheme.jsonで調整し、テンプレートはtemplates/・parts/ の .html を同じ名前で置いて上書きします。

親テーマも有効化する必要がありますか?

必要ありません。親テーマはインストールしておくだけで、有効化するのは子テーマの側です。親テーマを削除すると子テーマが動かなくなるので、残しておいてください。

まとめ: 公式の子テーマを探し、なければstyle.cssから作る

子テーマを作る前に、まず公式の子テーマがないか確認しましょう。自作するなら、必須はstyle.cssだけで、「Template:」に親テーマのフォルダ名を正確に書くことが特に注意したい点です。

functions.phpは、親テーマが自分と子テーマの両方のCSSを読み込むなら不要で、そうでなければ足りないほうのCSSを読み込みます。うまくいかないときは、表示されたメッセージを手がかりに原因を確かめてください。これからテーマを選ぶ方は、下の無料診断も参考にしてください。

6つの質問で、あなたに最適なテーマを診断

質問に答えるだけで、目的・予算・スキルに合ったWordPressテーマがわかります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次