EP EBISUCOM - エビスコム電子書籍出版部
Note Series

WordPressノート クラシックテーマにおけるtheme.jsonの影響と対策 2023

WordPressのテーマ(クラシックテーマ)にtheme.jsonを追加したら何が起きる? レイアウトが崩れたらどう対策すればよい? を実例と合わせてまとめた1冊です

はじめに

現在、WordPress の開発はブロックテーマが中心となっています。Web 制作の現場ではまだまだ従来のクラシックテーマが中心ですが、WordPress の新しい機能を使おうとすると、theme.json が必要なケースが増えてきました。

しかし、クラシックテーマに theme.json を追加すると、レイアウトが崩れることも少なくありません。theme.json の有無や設定に応じて WordPress の動作モードが切り替わり、適用される CSS や、DOM の構造が変わるためです。

この影響を把握することは、今後のクラシックテーマ制作ではとても重要です。 theme.json を追加してハイブリッド化するときはもちろん、新規作成時に機能を選択する上でも必要になります。コンテンツの表示にも影響しますので、将来、theme.json を持ったテーマに移行する際に生じる影響を把握しておくことにも つながります。

そのため、本書ではクラシックテーマをベースに「theme.json(とその設定)の有無に応じて、何が起こり、その対策はどうすればよいのか」を、実例と合わせてしっかりとまとめています。 知らずにハマると対応が大変ですが、個別の影響はシンプルです。知ってさえいれば怖いものではありません。theme.json への足がかりとして活用していただければと思います。

本書では、クラシックテーマをハイブリッドテーマにしたときに起きることとその対策をまとめています

本書について

本書では、クラシックテーマの theme.json の有無や設定に応じて起きる影響と、その対策をまとめています。

影響

特定の条件(theme.json がある、theme.json で ○○ を設定したなど)に応じて「何が起きるか」を影響としてまとめています。

影響(何が起きるのか)、影響が起きる条件、実例でページを構成しています

対策

影響ごとに「どうやって崩れたレイアウトを修正するか」「どうやって theme.json がなかったときの表示に近づけるか」という観点で、対策する方法をまとめています。 対策には theme.json またはエディターの UI を使用します。どちらを使っても対応できない場合はテーマの CSS を使用します。

実例をもとに、対策する方法を確認していきます。影響と対策に関するコードは、DOMの構造、クラス、適用されるスタイルの関連性や変化がわかるように掲載しています。

影響が起きる条件

影響が起きる条件(トリガーとなるもの)は次のような形で示しています。

条件ごとに theme.json は以下のような設定にしています。

theme.jsonがある場合

theme.json は空のもの(最低限必要な設定だけを記述したもの)を使っています。

theme.jsonで横幅を指定した場合

theme.json は contentSize と wideSize で横幅を指定したものを使っています。

theme.jsonで間隔を有効化した場合

theme.json は blockGap で間隔を有効化したものを使っています。

theme.jsonで左右の余白を指定した場合

theme.json は padding で左右の余白を指定したものを使っています。

theme.jsonで左右の余白を全幅対応にした場合

theme.json は全幅対応にする機能 useRootPaddingAwareAlignments を有効化したものを使っています。

確認に使用するテーマ

theme.json の有無や設定の影響で、実際にどのような表示やコードになるのかは、以下のテーマを使って確認します。特に記載がない場合、確認用のテーマを使用します。 確認用のコンテンツとセットでダウンロードデータに収録していますので、必要に応じて利用してください。

確認用のテーマ

「確認用のテーマ」は、Automattic 社が制作したクラシックテーマベースの定番のスターターテーマ「_s(underscores)」から CSS を除去したものです。テーマ側でスタイリングをしていない、素の状態で theme.json の影響を確認できるクラシックテーマとして使用します。

確認用のテーマ

デフォルトテーマ

「デフォルトテーマ」は、テーマ側でスタイリングしているクラシックテーマとして影響の確認に使用します。ブロックエディター(Gutenberg)の登場後にリリースされた、クラシックテーマベースの Twenty Nineteen から Twenty Twenty-One を使用します。

クラシックテーマベースのデフォルトテーマ

もくじ(影響一覧)

  • WordPressの基本的な仕組みへの影響と対策
    • [00] theme.json由来のグローバルスタイルが出力される
    • [01] エディターの各種UIを有効化できるようになる
    • [02] ボタンブロックのフォントサイズが変わる
  • 横幅への影響と対策
    • [03] エディターに適用されていたコアの横幅のスタイルが出力されなくなる
    • [04] 「コンテナ」ブロックでレイアウト機能のUIが有効になる
    • [05] theme.jsonで横幅を指定してもフロントに反映されない
    • [06] グループブロック内の<div>がなくなる
    • [07] 全幅・幅広のブロックを囲む<div>がなくなる
    • [08] 全幅・幅広が無効になる
    • [09] 全幅・幅広を無効にできない
  • 配置への影響と対策
    • [10] エディターに適用されていたコアの中央揃えのスタイルが出力されなくなる
    • [11] 左寄せ・右寄せにした画像を囲む<div>がなくなる
    • [12] 左寄せ・右寄せにした画像まわりの余白サイズが変わる
  • カラーパレットへの影響と対策
    • [13] テーマのカラーパレットといっしょにデフォルトのカラーパレットが表示される
    • [14] テーマのカラーパレットを反映するスタイルがグローバルスタイルで出力される
    • [15] デフォルトのカラーパレットが上書きされなくなる
  • 間隔への影響と対策
    • [16] Flexレイアウトのブロックで間隔を指定するUIが有効になる
    • [17] Flexレイアウトの間隔が変わる
    • [18] エディターに適用されていたコアの間隔のスタイルが出力されなくなる
    • [19] グローバルスタイルのコンテンツの間隔がエディターに反映される
    • [20] グローバルスタイルのコンテンツの間隔がフロントに反映されない
    • [21] 「コンテナ」ブロックで間隔を指定するUIが有効になる
    • [22] 「コンテナ」ブロック内の最初と最後のブロックから余白が削除される
  • 左右の余白への影響と対策
    • [23] エディターのまわりに余白を入れていたコアのスタイルが出力されなくなる
    • [24] フロントのまわりに入っていた余白がグローバルスタイルで削除される
    • [25] ページ全体の左右に余白が入る
    • [26] 全幅の左右に余白が入る
    • [27] 全幅に対応にする機能を有効化しても左右の余白の表示に反映されない
    • [28] グループブロックの左右の余白(パディング)が削除される

WordPress 関連の書籍