ブロックテーマの子テーマの作り方 | style.cssの最小構成と注意点

結論

ブロックテーマの子テーマは、親テーマとは別のフォルダに style.css(必須)を作って、「Template:」に親テーマのフォルダ名を書けば作れるわよ。

サチエ

あら、いらっしゃい、のりお。今日はどうしたの?

のりお

サチエさん、会社のWordPressのテーマを直接いじっていいのか不安で……。更新したら消えると聞いたんです。

サチエ

いい勘してるじゃない。親テーマを直接触るのは、あまりおすすめしないわ。

のりお

じゃあ、どうすればいいんですか?

サチエ

子テーマを作るのよ。よく聞いてね。

ブロックテーマの子テーマとは

子テーマは、親テーマの見た目や機能を引き継いで、一部だけを変えるためのテーマよ。

親テーマのファイルを直接編集すると、親テーマの更新で変更が消えてしまうの。変更は子テーマに置くのが基本。ブロックテーマでも同じで、子テーマは wp-content/themes の中に、親テーマとは別のフォルダとして作るのよ。

孫テーマ(子テーマの子)は、現在は作れないわ。

ブロックテーマの子テーマの作り方

最小の構成は、style.css 1ファイルよ。公式は、style.css を「子テーマが存在するために絶対に必要な唯一のファイル」と説明しているわ。

手順

  1. wp-content/themes の中に、子テーマ用の新しいフォルダを作るの。フォルダ名は、小文字とハイフンをつなげた形(kebab-case)が公式の例よ。
  2. そのフォルダに、style.css を作りなさい。
  3. style.css の先頭に、テーマ情報を書くの。「Theme Name」と「Template」を入れるのよ。
  4. 「Template」には、親テーマのフォルダ名を書くのよ。
  5. 管理画面のテーマ一覧に、子テーマが表示されることを確認するわ。
  6. 子テーマを有効化しなさい。

手順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 で扱うわ。設定は次の層で重なって、下から上へ、後のものが優先されるの。

  1. WordPress のデフォルトの theme.json
  2. 親テーマ
  3. 子テーマ
  4. ユーザーのカスタマイズ

ユーザーのカスタマイズは、管理画面での変更のこと。theme.json、テンプレート、パターンを上書きできて、データベースに保存されるのよ。

テンプレート、テンプレートパーツ、パターンの上書き

親テーマのテンプレート、テンプレートパーツ、パターンを上書きするには、同じ名前のファイルを子テーマに置くの。パターンは、同じ登録 Slug も必要よ。

親テーマにないテンプレート、パーツ、パターンを、子テーマに追加することもできるわ。

functions.php を使う時の注意

子テーマの functions.php は、親テーマの functions.php を置き換えないの。両方が読み込まれて、順番は子テーマが先、親テーマが後よ。

次の2点には、注意が必要よ。

  • 親テーマの functions.php のコードを、子テーマにそのままコピーしない。関数名が重複して、致命的エラーになるおそれがあるわ。
  • 子テーマで大きなカスタマイズをすると、管理が大変になることがあるの。

スタイルシートの読み込み(enqueue)

クラシックテーマでは、子テーマの style.css を functions.php で読み込む必要があることが多いのよ。

ブロックテーマでは、多くの場合不要。スタイルを一般に theme.json で扱うからね。ただ、厳密な決まりはないから、親テーマごとにコードを見て判断なさい。

functions.php を編集して、サイトが真っ白になった場合は、WordPressが真っ白になった時の直し方を見てちょうだい。

子テーマが表示されない・動かない時の確認

子テーマが一覧に出ない、または有効化しても動かない時は、次の点を見なさい。

  1. 「Template」の値が、親テーマのフォルダ名と一致しているか。綴りの違い、大文字と小文字、余計なスペースも見るの。
  2. 子テーマのフォルダが、wp-content/themes の直下にあるか。
  3. style.css が、子テーマのフォルダの直下にあるか。
  4. style.css の先頭の、テーマ情報のコメントが閉じているか。
  5. 親テーマが、同じ 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 は、子テーマにコピーしない。

出典

この記事を書いた人

サチエ

サチエ

元銀座ママのサチエが、WordPressの困りごとを人生と夜の世界の例えで教えるサイトです。慌てる男はモテないわよ。順番よ、順番。

← 記事一覧に戻る