ブロックテーマの子テーマは、親テーマとは別のフォルダに style.css(必須)を作って、「Template:」に親テーマのフォルダ名を書けば作れるわよ。
あら、いらっしゃい、のりお。今日はどうしたの?
サチエさん、会社のWordPressのテーマを直接いじっていいのか不安で……。更新したら消えると聞いたんです。
いい勘してるじゃない。親テーマを直接触るのは、あまりおすすめしないわ。
じゃあ、どうすればいいんですか?
子テーマを作るのよ。よく聞いてね。
ブロックテーマの子テーマとは
子テーマは、親テーマの見た目や機能を引き継いで、一部だけを変えるためのテーマよ。
親テーマのファイルを直接編集すると、親テーマの更新で変更が消えてしまうの。変更は子テーマに置くのが基本。ブロックテーマでも同じで、子テーマは wp-content/themes の中に、親テーマとは別のフォルダとして作るのよ。
孫テーマ(子テーマの子)は、現在は作れないわ。
ブロックテーマの子テーマの作り方
最小の構成は、style.css 1ファイルよ。公式は、style.css を「子テーマが存在するために絶対に必要な唯一のファイル」と説明しているわ。
手順
wp-content/themesの中に、子テーマ用の新しいフォルダを作るの。フォルダ名は、小文字とハイフンをつなげた形(kebab-case)が公式の例よ。- そのフォルダに、style.css を作りなさい。
- style.css の先頭に、テーマ情報を書くの。「Theme Name」と「Template」を入れるのよ。
- 「Template」には、親テーマのフォルダ名を書くのよ。
- 管理画面のテーマ一覧に、子テーマが表示されることを確認するわ。
- 子テーマを有効化しなさい。
手順4では、表示名じゃなくてフォルダ名を書くのよ。wp-content/themes からの相対で、親テーマのフォルダ名と100%一致している必要があるわ。源氏名じゃなくて、本名で書くようなものね。
style.css の最小の例
公式の例にならった書き方よ。親テーマを twentytwentyfour、子テーマのフォルダ名を grand-sunrise としているわ。名前は例だから、自分のテーマに合わせて変えなさい。
フォルダの場所:wp-content/themes/grand-sunrise/style.css
/*
Theme Name: Grand Sunrise
Template: twentytwentyfour
*/
Theme Name:子テーマの名前Template:親テーマのフォルダ名(必須)
ヘッダーに入れる項目の全体は、公式のメインスタイルシートのページで確認できるわ。
theme.json とテンプレートの扱い
theme.json は、子テーマに必須じゃないの。必須なのは style.css だけよ。
ブロックテーマでは、スタイルを一般に theme.json で扱うわ。設定は次の層で重なって、下から上へ、後のものが優先されるの。
- WordPress のデフォルトの theme.json
- 親テーマ
- 子テーマ
- ユーザーのカスタマイズ
ユーザーのカスタマイズは、管理画面での変更のこと。theme.json、テンプレート、パターンを上書きできて、データベースに保存されるのよ。
テンプレート、テンプレートパーツ、パターンの上書き
親テーマのテンプレート、テンプレートパーツ、パターンを上書きするには、同じ名前のファイルを子テーマに置くの。パターンは、同じ登録 Slug も必要よ。
親テーマにないテンプレート、パーツ、パターンを、子テーマに追加することもできるわ。
functions.php を使う時の注意
子テーマの functions.php は、親テーマの functions.php を置き換えないの。両方が読み込まれて、順番は子テーマが先、親テーマが後よ。
次の2点には、注意が必要よ。
- 親テーマの functions.php のコードを、子テーマにそのままコピーしない。関数名が重複して、致命的エラーになるおそれがあるわ。
- 子テーマで大きなカスタマイズをすると、管理が大変になることがあるの。
スタイルシートの読み込み(enqueue)
クラシックテーマでは、子テーマの style.css を functions.php で読み込む必要があることが多いのよ。
ブロックテーマでは、多くの場合不要。スタイルを一般に theme.json で扱うからね。ただ、厳密な決まりはないから、親テーマごとにコードを見て判断なさい。
functions.php を編集して、サイトが真っ白になった場合は、WordPressが真っ白になった時の直し方を見てちょうだい。
子テーマが表示されない・動かない時の確認
子テーマが一覧に出ない、または有効化しても動かない時は、次の点を見なさい。
- 「Template」の値が、親テーマのフォルダ名と一致しているか。綴りの違い、大文字と小文字、余計なスペースも見るの。
- 子テーマのフォルダが、
wp-content/themesの直下にあるか。 - style.css が、子テーマのフォルダの直下にあるか。
- style.css の先頭の、テーマ情報のコメントが閉じているか。
- 親テーマが、同じ
wp-content/themesにインストールされているか。
親テーマのフォルダ名は、wp-content/themes を開くと分かるわ。表示名じゃなくて、フォルダの名前を見なさい。
テーマを更新したり変えたりする前には、PHPバージョンの確認方法もあわせて見ておくと役立つわよ。
よくある質問
theme.json がなくても、子テーマは作れますか。
作れるわよ。子テーマに必須なのは style.css だけで、theme.json は必須じゃないの。
親テーマの functions.php は、子テーマにコピーしてもいいですか。
コピーしてはダメよ。関数名が重複して、致命的エラーになるおそれがあるわ。子テーマの functions.php は親テーマのものを置き換えず、両方が読み込まれるの。順番は子テーマが先、親テーマが後よ。
子テーマの子テーマ(孫テーマ)は作れますか。
孫テーマは、現在は作れないわ。
子テーマが表示されない時は、「Template」を見ればいいんですね。
そうよ。綴りと大文字小文字、余計なスペースまで見るの。
親テーマの functions.php は、コピーしないんですよね。
よく覚えたわね。あとは落ち着いて、順番にやりなさい。
まとめ
- 必須なのは style.css だけ。「Template」は、親テーマのフォルダ名と完全に一致させる。
- テンプレートなどの上書きは、同じ名前のファイルを子テーマに置く。
- 親テーマの functions.php は、子テーマにコピーしない。




