WordPress ブロックテーマを作ってみよう その4
前回は、固定ページや投稿の個別テンプレートを作成してました。
いよいよ、theme.json
を使って装飾を設定していきたいと思います。
01. theme.jsonとは
ブロックテーマのグローバルスタイルや、各ブロックのスタイルをまとめて管理できます。
CSSを直接書かずにデザインを整えたり、各ブロックやサイト全体のデザインを統一しやすくなります。
「JSON」は、キーと値の組み合わせであるオブジェクトで構成されるデータの記述形式です。
02. theme.jsonの基本
基本の書き方
波括弧{ }
の中に、すべての設定を記述します。
プロパティ名と値をコロン:
、設定ごとにカンマ,
で区切ります。
文字列は二重引用符" "
、配列は角括弧[ ]
で囲みます。
{
"property-name-1": "value-1",
"property-name-2": "value-2"
}
バージョン情報
まず、theme.json
のバージョンを設定します。
ファイルの先頭にスキーマを記載しておくと、コードエディターで自動補完を使用したり、ファイルの検証を行ったりできます。
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3
}
theme.jsonのキャッシュ対策
theme.json
はサイト表示の高速化のためにキャッシュされています。
ブロックテーマ開発中はデバッグモードを有効にしておくと、theme.json
のキャッシュをスキップして、変更内容をすぐ反映できます。
wp-config.php
のWP_DEBUG
の値をデフォルトの「false」から「true」に変更します。
define( 'WP_DEBUG', true );
03. theme.jsonの設定
theme.json
は「設定」と「スタイル」の2つのセクションに大きく分かれます。
- 設定:カラー・フォント・余白など、エディターの機能や初期値を定義
- スタイル:サイト全体や各ブロックにスタイルを適用
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
},
"styles": {
}
}
まずは「設定」セクションから記述していきます。
カラー
カラーパレットやグラデーションにテーマカラーを定義します。
palette
:カラーパレットgradients
:グラデーションduotone
:デュオトーン(2色のフィルターで画像を変換)
カラーに関する機能の有効・無効も設定できます。
custom
:カラーピッカーでカスタムカラーの選択customGradient
:カラーピッカーでカスタムグラデーションの選択customDuotone
:デュオトーンのハイライトとシャドウのカスタマイズlink
:リンクテキスト色の選択(デフォルトはfalse
)background
:背景色の選択text:
テキスト色の選択
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": {
"palette": [
{
"slug": "main",
"color": "#D0B4FF",
"name": "メインカラー"
},
{
"slug": "sub",
"color": "#F3EBFF",
"name": "サブカラー"
}
],
"gradients": [
{
"slug": "main-to-sub",
"gradient": "linear-gradient(160deg, var(--wp--preset--color--main), var(--wp--preset--color--sub))",
"name": "メイングラデーション"
}
],
"duotone": [
{
"colors": [ "#D0B4FF", "#F3EBFF" ],
"slug": "purple-and-light-purple",
"name": "紫と薄紫"
}
]
}
},
"styles": {
}
}
CSSカスタムプロパティ(変数)
グラデーションには、パレットのメインカラーとサブカラーを使用しています。
カラーパレットやフォントサイズなどで定義したプリセットを、以下のように呼び出せます。
--wp--preset--{preset-category}--{preset-slug}
エディターでカラーを確認する
管理画面からエディターを確認すると、テーマカラーが表示されました。


タイポグラフィ
続いて、フォントファミリーやフォントサイズを定義します。
fontFamilies
: フォントファミリーfontSizes
:フォントサイズ
タイポグラフィに関する機能の有効・無効も設定できます。
customFontSize
:カスタムフォントサイズの設定dropCap
:先頭の文字を大きく表示fontWeight
:フォントの太さletterSpacing
:字間lineHeight
:行間(デフォルトはfalse
)textDecoration
:下線や取り消し線writingMode
:横書き、縦書き設定(デフォルトはfalse
)
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": { 省略 },
"typography": {
"fontFamilies": [
{
"fontFamily": "'Noto Sans JP', sans-serif",
"slug": "noto-sans-jp",
"name": "Noto Sans JP",
"fontFace": [
{
"fontFamily": "'Noto Sans JP'",
"fontStyle": "normal",
"fontWeight": "400",
"src": [
"file:./assets/fonts/noto-sans-jp/NotoSansJP.woff2"
]
}
]
}
],
"fontSizes": [
{
"slug": "normal",
"size": "1rem",
"name": "本文"
},
{
"slug": "title",
"size": "2rem",
"name": "タイトル"
}
]
}
},
"styles": {
}
}
エディターでタイポグラフィを確認する
設定したフォントファミリー、フォントサイズが反映されています。
また、タイポグラフィパネル右上のをクリックすると、有効にした機能を表示できます。



レイアウト
グループブロック・カバーブロック・カラムブロックなどで設定できる、コンテンツ幅を定義します。
contentSize
:デフォルトのブロック幅WideSize
:ワイド配置設定が有効になっているブロックの幅
レイアウトに関する機能の有効・無効も設定できます。
allowEditing
:レイアウトコントロールパネルの表示allowCustomContentAndWideSize
:コンテンツ幅と幅広サイズの表示
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": { 省略 },
"typography": { 省略 },
"layout": {
"contentSize": "840px",
"wideSize": "1100px"
}
},
"styles": {
}
}
エディターでレイアウトを確認する
エディターでグループブロックを選択すると、レイアウトを設定することができます。

レイアウトのCSSカスタムプロパティ
指定したコンテンツ幅は、それぞれ変数として--wp--style--global--content-size
、--wp--style--global--wide-size
で利用できます。
テンプレートでレイアウトを指定する
header.html
にコンテンツ幅を指定したい場合、グループブロックで囲み、以下のように記述します。
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group container">
<!-- wp:site-logo /-->
<!-- wp:site-title /-->
<!-- wp:site-tagline /-->
<!-- wp:navigation -->
<!-- wp:page-list /-->
<!-- /wp:navigation -->
</div>
<!-- /wp:group -->
スペース
マージン(外)・パディング(内)・ギャップ(間)の余白はデフォルトでは無効になっているため、有効化するとエディターから設定できるようになります。
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": { 省略 },
"typography": { 省略 },
"layout": { 省略 },
"spacing": {
"margin": true,
"padding": true,
"blockGap": true
}
},
"styles": {
}
}
線
線の色・角丸・スタイル・幅もデフォルトでは無効なため、有効化すると自由に設定できます。
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": { 省略 },
"typography": { 省略 },
"layout": { 省略 },
"spacing": { 省略 },
"border": {
"color": true,
"radius": true,
"style": true,
"width": true
}
},
"styles": {
}
}
AppearanceTools
複数の機能をまとめて有効化することもできます。
{
"version": 3,
"settings": {
"appearanceTools": true
}
}
上記のように記述した場合、以下の機能がまとめて有効化されます。
{
"version": 3,
"settings": {
"background" : {
"backgroundImage": true,
"backgroundSize": true
},
"border": {
"color": true,
"radius": true,
"style": true,
"width": true
},
"color": {
"link": true
},
"dimensions": {
"aspectRatio" : true,
"minHeight": true
},
"position": {
"sticky": true
},
"spacing": {
"blockGap": true,
"margin": true,
"padding": true
},
"typography": {
"lineHeight": true
}
}
}
カスタムプリセット
CSSカスタムプロパティ(変数)を作成することができます。
以下のように定義した場合は、--wp--custom--spacing
で呼び出します。
{
"version": 3,
"settings": {
"custom": {
"spacing": "14px"
}
}
}
ブロックプリセット
特定のブロックごとに、カラーやタイポグラフィなどの設定を行うことができます。
カバーブロックにカスタムカラーパレットを追加したい場合は、以下のように記述します。
{
"version": 3,
"settings": {
"blocks": {
"core/cover":{
"color": {
"palette": [
{
"slug": "cover",
"color": "#FFF4CD",
"name": "カバーカラー"
}
]
}
}
}
}
}
おわりに
長くなってしまったので、残り半分の「スタイル」セクションは次回に持ち越します。
裏側で設定した内容が、いつもの編集画面に出てくると面白いですね。
まだまだ奥は深そうですが、少しずつ解読していきたいと思います。