theme.jsonファイルの構造とプロパティを理解することは、ブロックテーマ開発の基本。theme.jsonはブロックベースのテーマの主要な要素を制御する「ハブ」として機能します。

テーマをゼロから構築する場合、既存のテーマをカスタマイズする場合、スタイルバリエーションを開発する場合、あるいは子テーマを編集する場合でも、theme.jsonを扱うことになります。

幸い、JSON(JavaScript Object Notation)は、データを一般的なものから特定のプロパティに整理する階層構造を持ち、読むことができる形式になっています。theme.jsonの文脈では、JavaScriptに関する深い知識よりも、CSS(Cascading Style Sheets)に精通していることの方が重要になります。

今回は、theme.json内のプライマリおよびセカンダリ(ネストされた)プロパティを紐解き、主要な設定とスタイルプロパティについてご説明します。これらはファイルの中核となる要素です。各要素の説明とコード例も取り上げます。

なお、本記事はすでに公開済みの記事『theme.jsonの活用方法─WordPressテーマを賢くカスタマイズ』内の「theme.jsonファイルのプロパティを使用する」セクションをもとに書かれています。

ブロックテーマにおけるスタイルのレンダリング

WordPressは組み込みのカスケード処理を用いてサイトのスタイルをレンダリングします。複数のソースが同じ設定やスタイルを定義している場合は、以下の優先順位で適用されます。

  1. WordPressコア:デフォルト設定を記述したtheme.jsonは、wp-includesディレクトリに格納されている。このファイルはWordPressのメジャーリリースと同時に更新されるため編集不可。
  2. テーマ:テーマ開発者がテーマの設定、スタイル、その他のプロパティを定義するために使用する主要なtheme.json
  3. スタイルバリエーション:テーマにスタイルバリエーションが含まれている場合、各theme.jsonファイルがテーマのstylesサブディレクトリに保存される。
  4. 子テーマ:標準的なテーマと同様、親テーマのファイルを直接編集することなく、カスタマイズすることができる(任意)。
  5. 子テーマのスタイルバリエーション:通常のスタイルバリエーションと同様、子テーマはstylesサブディレクトリに独自のtheme.jsonを持つことができる(任意)。
  6. ユーザーが作成したスタイル:WordPressのエディター(固定ページ、投稿、またはサイト全体)で追加され、データベースに保存されたカスタムスタイル。

上記の順序に従って、優先度の高いソースからのスタイルが優先度の低いソースからのスタイルを上書きします。例えば、テーマのtheme.jsonの設定は、WordPressコアのtheme.jsonを上書きします。同様に、子テーマのスタイルバリエーションは、親テーマのスタイルバリエーションよりも優先されます。

ユーザーが作成したスタイルが最も優先度が高くなり、他のすべてのスタイルを上書きします。

今回は、WordPressブロックテーマのルートディレクトリにあるtheme.jsonに焦点を当てます。

プライマリプロパティとそのキー/値

theme.jsonの7つのトップレベルオブジェクトをご紹介します。理解しやすいよう、3つのセクションに分類します。

本記事での定義

theme.jsonで作業を行うと、重要なコンポーネントの定義が異なる場合があります。この記事では、それぞれ以下のように定義します。

  1. セクション:トップレベルのグループ(「トップレベルオブジェクト」とも呼ばれる)
  2. オブジェクトsettingsstylesなど、theme.json内の主要なコンポーネント
  3. プロパティ:オブジェクト内の構成要素(例えば、settingsオブジェクトには12の異なるプロパティが含まれる)
  4. キー/値のペア:プロパティはキーと値のペアで構成される。「キー」はプロパティの属性を表し、引用符(””)で囲まれ、「値」はブール値、文字列、配列のいずれかになる。

デフォルトで」は、wp-includes/theme.jsonにあるコアtheme.jsonのデフォルト設定を指します。

ユーザー」は、サイト、固定ページ、投稿のエディターで設定を変更できるWordPressサイトの管理者を指します。

構文の概要

  1. ブール値は引用符で囲まない
  2. 文字列は二重引用符で囲む
  3. 配列は角括弧([])で囲む
  4. オブジェクトは中括弧({})で囲み、複数のプロパティや入れ子になったオブジェクトを含む
  5. カンマはオブジェクト内の複数のキーと値のペアを区切るために使用

以下は一般的な構文の例です。

{
    "house": {
        "rooms": "kitchen"
    }
}

プロパティの分類

説明を理解しやすくするため、プロパティを以下3つに分けて見ていきます。

  1. 基本プロパティ
  2. 設定とスタイルのプロパティ
  3. テンプレートとパターンのプロパティ

また、コード例も理解しやすくなるよう、外側のラッパーオブジェクトを一部省略します。

{
    "settings": {
        "appearanceTools": false,
        "background": {
            "backgroundImage": true
        }
    }
}

また、上記のように構造全体を示す代わりに、以下のように省略することがあります。

"appearanceTools": false,
"background": {
    "backgroundImage": true
}

基本的なプロパティ

theme.jsonファイルの冒頭には、通常$schemaversionという2つの重要なプロパティがあります。これらのプロパティはファイルの先頭に置かれます。現在のスキーマバージョンは3で、WordPress 6.6で導入されています。

"$schema": "https://schemas.wp.org/wp/6.6/theme.json", "version": 3

設定とスタイルのプロパティ

設定プロパティは一般的にfunctions.phpファイルで設定され、クラシックテーマでいうところのWordPress管理画面「外観」>「カスタマイズ」で表示される機能にあたります。

スタイルは、styles.cssファイルに存在していたCSSプロパティに似たもので、テーマのレイアウトとデザインを制御します。

設定

blockelementsプロパティを除き、その他の設定はすべてグローバルになります。設定の多くはboolean型で、UI機能を有効または無効にするトグルとして機能します。

注意点として、すべてのキーがすべての文脈で適用されるわけではありません。例えば、段落ブロックの高さの最小値は設定することができません。

appearanceTools(外観ツール)

"appearanceTools": trueを使用して一括または個別に有効化できます。

この機能を有効にすると、WordPressエディターのさまざまなUIオプションが表示され、開発を効率化することができます。デフォルトでは無効になっています("appearanceTools": false)。

appearanceTools内のキーには以下が含まれます。

  • background
    • backgroundImage─ブロックに背景画像を追加
    • backgroundSize─背景画像の拡大縮小方法を定義(カバー、コンテントなど)
  • border
    • color─枠線の色を選択
    • style─枠線のスタイル(実線、破線、点線など)を選択
    • width─枠線の太さを選択
    • radius─枠線の半径を調整して角を丸く設定
  • color
    • link─コンテンツ内のリンクの色を設定
    • heading─見出しタグ(<h1><h2>)の色を設定
    • button─テーマ内のボタンの色を設定
    • caption─キャプションのカスタムカラーを設定
  • dimensions
    • aspectRatio─ブロックの幅と高さの比率を設定
    • minHeight─ブロックの高さの最小値を設定
  • position
    • sticky─ブロックを固定表示
  • spacing
    • blockGap─ブロック間の間隔を調整
    • margin─ブロックの周りの余白を調整
    • padding─ブロック内の余白を調整し、コンテンツと境界線の間の余白を定義
  • typography
    • lineHeight─行の高さ(テキストの行間)を調整し、可読性を向上

 

:他の外観ツールは無効にしたまま、ユーザーが背景画像を追加できるようにします。

"appearanceTools": false,
"background": {
    "backgroundImage": true
}
UIでグループブロックに背景画像を追加
UIでグループブロックに背景画像を追加
blocks(ブロック)

ユーザーはblocksプロパティを使用してブロックごとに設定を行い、グローバル設定を上書きすることができます。

appearanceToolsfalseに設定したまま、ブロックの枠線の設定だけを個別に有効にします。

"border": {
    "color": true,
    "style": true,
    "width": true,
    "radius": true
}
UIで枠線の設定を調整
UIで枠線の設定を調整
color(色)

colorプロパティを使用すると、背景色、テキスト色、グラデーションなどの色を設定できます。

colorプロパティのキーは以下のとおりです。

  • background─ブロックや要素の背景色を設定
  • custom─ユーザーがカスタムカラーを選択する機能を有効または無効化
  • customDuotone─画像にカスタムデュオトーンフィルターを適用
  • customGradient─カスタムグラデーションオプションを有効化
  • defaultDuotone─デフォルトのデュオトーン画像フィルターを提供
  • defaultGradient─ユーザーが利用できるデフォルトのグラデーションオプションを定義
  • defaultPalette─テーマのデフォルトのカラーパレットを設定
  • duotone─画像にデュオトーンフィルターを設定
  • gradient─背景やその他の要素のグラデーションオプションを有効化
  • link─テーマ内のリンクの色を設定
  • text─テキストの色オプションを制御
  • heading─見出し(h1、h2など)の色を設定
  • button─ボタンの色のオプションを制御
  • caption─メディア要素のキャプションの色を設定

例をいくつか見てみます。

例1:ユーザーによるカラーピッカーの使用を無効化します。

"color": {
    "custom": false
}
カラーピッカーのUIを無効化
カラーピッカーのUIを無効化

例2:独自のプライマリとセカンダリのテーマカラーを設定します。

"color": {
   "palette": [
       { "slug": "primary", "color": "#0000ff", "name": "Primary" },
       { "slug": "secondary", "color": "#ff0000", "name": "Secondary" }
   ]
}
プライマリとセカンダリのテーマカラーを設定するUI
プライマリとセカンダリのテーマカラーを設定するUI
dimensions(寸法)

dimensionsプロパティは、幅、高さ、縦横比などのブロック寸法の設定を提供してくれます。

dimensions プロパティ内のキーは以下の通りです。

  • aspectRatio─ブロックの縦横比(16:9、4:3など)を設定またはロック
  • defaultAspectRatios─ブロックのデフォルトの縦横比を定義
  • minHeight─ブロックの高さの最小値を設定

:ユーザーがサポートされているブロックの高さの最小値を設定できるようにします。

"dimensions": {
    "minHeight": true
}
UIで高さの最小値を設定
UIで高さの最小値を設定
layout(レイアウト)

layoutプロパティでは、コンテンツの幅やレイアウトのカスタマイズの可否など、レイアウト関連のオプションを設定できます。これにより、ユーザーはこれらのキーでレイアウトオプションを設定することができます:

  • contentSize─ブロックのデフォルトの幅を設定
  • wideSize─wide alignment(幅広揃え)が選択されているときのブロックの幅を定義
  • allowEditing─ユーザーがレイアウト設定を調整できるかどうかを決定
  • allowCustomContentAndWideSizecontentSizewideSizeのカスタマイズを可能に

:デフォルト幅と幅広(ワイド)幅を使ってレイアウト設定を構成します。

"layout": {
    "contentSize": "620px",
    "wideSize": "1000px"
}
デフォルト幅と幅広(ワイド)幅のブロック設定
デフォルト幅と幅広(ワイド)幅のブロック設定
Lightbox

lightboxプロパティを使用すると、画像の「クリックで拡大」機能を有効にすることができます。

lightboxプロパティ内のキーは以下のとおりです。

  • enabled─Lightbox機能を有効または無効化
  • allowEditing─Lightboxの設定を切り替え

:ユーザーが画像のLightbox機能を切り替えられるようにします。

"blocks": {
    "core/image": {
        "lightbox": {
            "allowEditing": true
        }
    }
}
Lightboxを有効/無効にするトグルスイッチ
Lightboxを有効/無効にするトグルスイッチ
position(位置)

positionプロパティは、ユーザーがブロックの位置を制御できることを可能にします。

:ブロックを固定表示するようにします。

"position": {
    "sticky": true
}

shadowプロパティは、プリセットまたは独自に定義された影を使用して、ブロックに影を適用することができます。

shadowプロパティ内のキーは以下のとおりです。

  • defaultPresets─デフォルトのプリセットを有効または無効化
  • presets─カスタムプリセットを定義

:デフォルトの影を無効にし、独自の影「Natural」定義します。

"shadow": {
    "defaultPresets": false,
    "presets": [
        { "name": "Natural", "slug": "natural", "shadow": "6px 6px 9px rgba(0, 0, 0, 0.2)" }
    ]
}
UIで影を設定
UIで影を設定

左から1〜3の順に進み、最後のステップ3では影「Natural」が示されています。

spacing(余白)

spacingプロパティは、エディターでの余白(パディング、マージン、ギャップ)の管理方法を定義します。

spacingプロパティ内のキーは以下のとおりです。

  • blockGap─ブロック間のギャップ(隙間)を設定
  • margin ─ブロックの周囲にマージンを設定
  • padding─ブロック内のパディングを設定
  • units─余白に使用する単位を定義(px、remなど)
  • customSpacingSize─ユーザーが独自の余白サイズを設定できるように
  • spacingSizes─プリセットの余白サイズの範囲を定義
  • spacingScale─余白単位のスケーリングを可能に

:パディング、マージン、幅、高さに使用する単位を2種類(pxとrem)に制限し、appearanceToolstrueに設定してサイトエディターに余白調整のセクションを表示します。

"spacing": {
    "units": ["px", "rem"]
}
余白の単位を2種類に制限
余白の単位を2種類に制限
typography(タイポグラフィ)

typographyプロパティは、フォントサイズ、ウェイト(文字の太さ)、行の高さなど、テーマのテキストにまつわる設定を定義します。

typographyプロパティ内のキーは以下のとおりです。

  • defaultFontSizes─ユーザーが利用できるデフォルトのフォントサイズを定義
  • customFontSize─カスタムフォントサイズの設定機能を有効または無効化
  • fontStyle─フォントのスタイルを制御(標準、斜体)
  • fontWeight─フォントの太さ(太字、細字など)を設定
  • flui─画面サイズに応じてフォントサイズを動的に調整するフルードタイポグラフィを有効化
  • letterSpacing─文字の間隔を制御
  • lineHeight─テキストの各行の高さを設定
  • textAlign─テキストの配置(左、中央、右など)を調整できるように
  • textDecoration─テキストの装飾(下線など)のオプションを提供
  • writingMode─テキストのレイアウトを設定(横書き、縦書きなど)

:カスタム文字サイズとドロップキャップの両方を無効にします。

"typography": {
    "customFontSize": false,
    "dropCap": false
}
独自のフォントサイズ設定とドロップキャップを無効化
独自のフォントサイズ設定とドロップキャップを無効化

この場合、赤く強調されたセクションがエディターに表示されなくなります。

useRotPaddingAwareAignments(ルート要素のパディングを考慮した配置)

useRootPaddingAwareAlignementsプロパティをtrueに設定すると、ページのルート要素(<html><body>)に適用されたパディングを考慮して、wide(幅広)やfull-width(全幅)のブロックの配置が適切に調整されるようになります。これにより、パディングが適用されている場合でも正しい配置が確保されます。

"useRootPaddingAwareAlignments": true

trueに設定すると、ルートの上、右、下、左のパディング値もスタイルとして定義しなければなりません(これについては後ほど)。

"spacing": {
    "padding": {
        "top": "0",
        "right": "100px",
        "bottom": "0",
        "left": "100px"
    }
}
useRotPaddingAwareAignmentsのデフォルト設定(余白なし)
useRotPaddingAwareAignmentsのデフォルト設定(余白なし)

上で見たコードのようにuseRootPaddingAwareAlignementsの設定、および左右のパディングを本文に適用すると、以下のようになります。

useRootPaddingAwareAlignmentsをtrueに設定し、左右に余白を適用した場合
useRootPaddingAwareAlignmentsをtrueに設定し、左右に余白を適用した場合

styles(スタイル)

stylesプロパティを使用すると、テーマのルート(デフォルト)、特定の要素、または個々のブロックにCSSスタイルを適用できます。

背景スタイル

画像、位置、添付ファイルなど、背景にまつわるプロパティを制御します。

背景に共通するキーは以下のとおりです。

  • backgroundImage─ブロックまたは要素の背景画像を定義
  • backgroundPosition─背景画像の位置を設定する(中央、右上など)
  • backgroundRepeat─背景画像を繰り返すかどうかを指定(repeat、no-repeatなど)
  • backgroundSize─背景画像のサイズを制御(cover、containなど)
  • backgroundAttachment─背景画像を固定するか、ページと一緒にスクロールするかを指定

:テーマの背景画像を設定します。

"background": {
   "backgroundImage": {
       "url": "https://joyofwp.com/wp-content/uploads/2024/09/dots.png"
   }
}
すべてのページに背景画像のスタイルを追加
すべてのページに背景画像のスタイルを追加
ブロックに特定のスタイルを適用

影、タイポグラフィ、枠線など、特定のスタイルを個々のブロックに適用することができます。

枠線のキーは以下のとおりです。

  • color─枠線の色を指定
  • radius─角丸の枠線半径を設定
  • style─枠線のスタイル(実線、点線など)を指定
  • width─枠線の幅を制御
  • toprightbottomleft─各辺に個別のスタイルを設定

:ページ全体を囲む20pxの赤の枠線を設定します。

"border": {
   "color": "#ff0000",
   "width": "20px",
   "style": "solid"
}
すべてのページに枠線のスタイルを適用
すべてのページに枠線のスタイルを適用

特定のブロック、要素、またはルートにカスタムCSSを割り当てることもできます。

:テーブルブロックに赤の文字色を適用します。

"border": {
   "color": "#ff0000",
   "width": "20px",
   "style": "solid"
}
すべてのテーブルにカラースタイルを追加
すべてのテーブルにカラースタイルを追加
color(カラースタイル)

colorプロパティを使用すると、背景色、グラデーション、テキスト色の設定を制御できます。

colorプロパティのキーは以下のとおりです。

  • background─ブロックまたは要素の背景色を設定
  • gradient─ブロックの背景グラデーションを定義
  • text─テキストの色を制御

:すべてのページのすべての要素で背景を黒、テキストを白に設定します。

"color": {
   "background": "#000000",
   "text": "#ffffff"
}
すべてのページにテキストと背景色のスタイルを設定
すべてのページにテキストと背景色のスタイルを設定
CSS

cssプロパティを使用すると、カスタムスタイルを特定のクラスに適用することができ、テーマスタイルをより細かく制御することができます。

:カスタムスタイルをwp-block-template-partswp-block-buttonに適用し、ボタンにホバー効果を追加します。

"css": ".wp-block-template-part { background-color: #777777; padding: 20px; } .wp-block-button__link:hover { background-color: #ffffff; color: #000000; }"
ヘッダー内のすべてのボタンにテキストと背景スタイルのホバー効果を適用
ヘッダー内のすべてのボタンにテキストと背景スタイルのホバー効果を適用

上のようにヘッダーとフッターのテンプレート部分には、background-colorpaddingが割り当てられています。またボタンのホバー効果は、白い背景に黒いテキストが表示されています。

dimensions(寸法)

dimensionsプロパティでは、ブロックの幅、高さ、縦横比を制御できます。

dimensionsプロパティのキーは以下のとおりです。

  • aspectRatios─要素のカスタム縦横比を定義
  • minHeight─ブロックの高さの最小値を設定

:画像ブロックのカスタム縦横比を3:7に設定します。

"blocks": {
   "core/image": {
       "dimensions": {
           "aspectRatio": "custom"
       }
   }
}

ただし、上記だけでは不十分で、「custom」スタイルを設定セクションに登録する必要があります。

"dimensions": {
   "defaultAspectRatios": true,
   "aspectRatios": [
       {
           "name": "Custom Ratio 3:7",
           "slug": "custom",
           "ratio": "3/7"
       }
   ]
}
すべての画像に独自の縦横比を適用
すべての画像に独自の縦横比を適用

上のスクリーンショットで、独自の縦横比(Customr Ratio)が追加されていることがわかります。デフォルトの7つの縦横比を無効にするには、設定セクションから"defaultAspectRatios":trueを削除します。

elements(要素固有のスタイル)

elementsプロパティは、リンクやボタン、見出しなどの特定のHTML要素にスタイルを適用することができます。

:すべてのリンクのテキスト装飾(下線)を無効にします。

"elements": {
   "link": {
       "typography": {
           "textDecoration": "none"
       }
   }
}
リンクのテキスト装飾スタイルを無効化
リンクのテキスト装飾スタイルを無効化
filter(フィルター)

filterプロパティを使用すると、画像などの特定のブロックにCSSのようなフィルター効果(ぼかし、明るさなど)を適用できます。

:画像ブロックにぼかしと明るさのフィルターを適用します。

"blocks": {
   "core/image": {
       "filter": {
           "duotone": "blur(5px) brightness(0.8)"
       }
   }
}
すべての画像にぼかしスタイルを追加
すべての画像にぼかしスタイルを追加

上のスクリーンショットでは、画像ブロックにぼかしと明るさの効果が適用されています。他にも以下のようなものがあります。

  • contrast─要素のコントラストを調整
  • grayscale─要素をグレースケールに変換
  • invert─要素の色を反転
  • opacity─要素の透明度を設定
  • saturate─色の彩度を調整
  • sepia─要素にセピアフィルターを適用
outline(輪郭)

outlineプロパティは、レイアウト空間に影響を与えることなく、要素の境界線の外側に描画される輪郭のスタイルを定義します。

outlineプロパティには以下のキーがあります。

  • color─輪郭の色を設定
  • offset—枠線と輪郭の間の間隔を制御
  • style─輪郭のスタイル(点線、実線など)を指定
  • width─輪郭の幅を設定

:ボタンに赤い点線の輪郭を適用します。

"elements": {
   "button": {
       "outline": {
           "color": "#ff0000",
           "style": "dotted",
           "width": "4px"
       }
   }
}
すべてのボタンに輪郭スタイルを適用
すべてのボタンに輪郭スタイルを適用
shadow(影のスタイル)

shadowプロパティを使用すると、画像ブロックに影を適用(ボックスシャドウ)を適用し、要素を強調することができます。

:すべての画像に影を適用します。

"blocks": {
   "core/image": {
       "shadow": "0 10px 20px 0 rgb(0 0 225 / 0.50)"
   }
}
すべての画像に影をつける
すべての画像に影をつける
spacing(余白のスタイル)

spacingプロパティは、テーマの余白(パディング、マージン、ブロックギャップ)のスタイルを制御します。

spacingプロパティのキーは以下のとおりです。

  • blockGap─ブロックとブロックの間隔(ギャップ)を調整
  • margin─ブロックの周囲に余白(マージン)を設定
  • padding─ブロック内の余白(パディング)を設定

:左右に独自のパディングを設定します。

"spacing": {
   "padding": {
       "left": "min(6.5rem, 8vw)",
       "right": "min(6.5rem, 8vw)"
   }
}
左右のパディングを追加
左右のパディングを追加
typography(タイポグラフィのスタイル)

typographyプロパティは、フォントスタイルやサイズなど、テキストにまつわる設定を制御します。

typographyプロパティの主なキーは以下のとおりです。

  • fontFamily─テキストのフォントファミリーを設定
  • fontSize─フォントサイズを定義
  • fontStyle─フォントのスタイルを指定(標準、斜体など)
  • fontWeight─フォントの太さを調節
  • letterSpacing─文字の間隔を調整
  • lineHeight─行の高さ(テキストの行間)を定義
  • textAlign─テキストの配置を設定(左、中央、右など)
  • textColumns─テキストの列数を制御
  • textDecoration─テキストの装飾(下線など)を設定
  • writingMode─書き込みモード(水平、垂直など)を定義
  • textTransform─書き込みモード(水平、垂直など)を定義

:すべての見出しの太さ(ウェイト)を300に設定し、斜体のスタイルを適用します。

"blocks": {
   "core/heading": {
       "typography": {
           "fontWeight": "300",
           "fontStyle": "italic"
       }
   }
}
すべての見出しにフォントスタイル(斜体)と太さを適用
すべての見出しにフォントスタイル(斜体)と太さを適用

テンプレートとパターンのプロパティ

以下3つのトップレベルプロパティは、テーマにカスタムアセットを登録するために使用されます。

1. カスタムテンプレート

templatesプロパティは、様々な投稿タイプのカスタムテンプレートを登録するために使用します。

  • nametemplatesサブディレクトリにある.htmlまたは.phpファイルの名前
  • title─識別しやすいようにテンプレートに割り当てられるタイトル
  • postTypes─テンプレートがレンダリングするコンテンツのタイプ(投稿、固定ページなど)を指定

2. テンプレートのパーツ

templatePartsプロパティは、テンプレートの再利用可能な部分(ヘッダーやフッターなど)を定義するために使用します。

  • namepartsサブディレクトリにある.htmlまたは.phpファイルの名前
  • title─識別しやすくするためにテンプレート部分につけられたタイトル
  • area─テンプレートパーツがページのどの部分に適用されるかを指定(headerfootersidebarなど)

3. パターン

patternsプロパティは、ブロックパターンディレクトリからパターンスラッグの配列を登録し、テーマで利用できるようにします。

パターンの登録方法は以下のようになります。

"patterns": [
    "my-custom-pattern-slug"
]

theme.jsonを使用した3つの実践例

最後にテーマの開発において、よく行われる実践例をご紹介します。

1. パターンの追加

WordPressのブロックパターンディレクトリから2つのパターンを追加します。ここでは例として、「Fullscreen cover image gallery」を使用します。

"patterns": [
   "fullscreen-cover-image-gallery",
   "hero-banner-with-overlap-images"
]
wordpress.orgからパターンを挿入
wordpress.orgからパターンを挿入

注意事項

  • パターンディレクトリから引き出したパターンは、サイトエディターの「パターン」セクションには表示されません。インサータからのみ利用可能です。
  • 上の例には、トップレベルのプロパティpatternsが含まれています(settingsstylesを比較して、簡素化するために前述の例では省略)。

2. カスタムフォントの追加

Google Fontsライブラリから2つのフォントファイル(Roboto-Regular.ttfRoboto-Bold.ttf)をダウンロードし、テーマのassets/fonts/サブディレクトリにアップロードします。

以下のコードで両方のフォントを登録し、サイト全体で利用できるようにします。

"settings": {
   "typography": {
       "fontFamilies": [
           {
               "fontFamily": "Roboto",
               "name": "Roboto",
               "slug": "roboto",
               "fontFace": [
                   {
                       "fontFamily": "Roboto Regular",
                       "fontWeight": "400",
                       "fontStyle": "normal",
                       "src": [
                           "file./assets/fonts/Roboto-Regular.ttf"
                       ]
                   },
                   {
                       "fontFamily": "Roboto Bold",
                       "fontWeight": "700",
                       "fontStyle": "bold",
                       "src": [
                           "file./assets/fonts/Roboto-Bold.ttf"
                       ]      
                   }  
               ]
           }
       ]
   }
}
Google Fontsが有効になっている状態
Google Fontsが有効になっている状態

3. カラーパレットの設定

ユーザーが使用できるカラーパレットを特定のもののみに制限するには、以下のように設定します(グラデーションやデュオトーンも設定可能)。

"settings": {
   "color": {
       "custom": false,
       "defaultPalette": false,
       "palette": [
           {
               "slug": "primary",
               "color": "#1e8cbe",
               "name": "Primary"
           },
           {
               "slug": "secondary",
               "color": "#21759b",
               "name": "Secondary"
           },
           {
               "slug": "tertiary",
               "color": "#",
               "name": "Tertiary"
           },
           {
               "slug": "accent",
               "color": "#464646",
               "name": "Accent"
           }
       ]
   }
}
カスタムテーマカラーの例
カスタムテーマカラーの例

ちなみに、上の4色はWordPress公式カラーの一部です。

まとめ

今回は、最新のWordPressテーマ開発においてtheme.jsonが果たす重要な役割について焦点を当てました。theme.jsonを使いこなすことで、複雑なPHPやCSSによる上書きなしで、テーマの視覚的デザインとユーザーインターフェースを柔軟にカスタマイズすることができます。

appearanceToolsのようなプロパティの効果的な使い方を習得すれば、WordPressテーマの構築や改善の際に、より高度な機能や効率性を提供することができます。theme.jsonファイルは、柔軟かつ使いやすいテーマを構築したい開発者にとって必要不可欠な存在になります。

Bud Kraus

Bud Kraus has been working with WordPress as an in-class and online instructor, site developer, and content creator since 2009. He has produced instructional videos and written many articles for WordPress businesses.