2026年最新版!WordPressフルサイト編集とGutenbergの実践的カスタマイズ術

【動作確認済み環境】 ・WordPress:6.8 ・PHP:8.2 ・確認日:2026年3月 ・テーマ:Twenty Twenty-Four ※環境によって動作が異なる場合があります。必ず検証環境でお試しください。 「フルサイト編集(FSE)は実務でどこまで使えるのか?」 最近、同業者や制作会社の担当者からこのような相談を受けることが増えました。実際の案件でも、従来のクラシックテーマからブロックテーマへの移行を検討する場面が多くなっています。ただ、Gutenbergでの意図しないレイアウト崩れや、独自のスタイル追加など、現場レベルでクリアしなければならない課題も少なくありません。この記事では、実案件での検証を通じて得た、フルサイト編集とGutenbergを実務で安全に運用するための判断基準やカスタマイズの手法をシェアします。導入や設計に迷っている方の参考になれば幸いです。 この記事でわかること ・実務で使えるブロックテーマ構築の具体的な手順がわかります ・Gutenbergに独自のスタイルを安全に追加する手法がわかります ・クラシックテーマからフルサイト編集へ移行する際の判断基準がわかります ・実案件で起きやすいレイアウト崩れを防ぐCSS設計の考え方がわかります ・保守性と運用効率を高めるブロックパターンの活用事例がわかります
1. フルサイト編集の基本から実務で使えるブロックテーマ構築の手順
【動作確認済み環境】 ・WordPress:6.4.3 ・PHP:8.1.22 ・確認日:2024年3月 ※環境によって動作が異なる場合があります。必ず検証環境でお試しください。 「フルサイト編集(FSE)、そろそろ実案件で導入すべきかな…」 そんなご相談を、同業の制作者やWeb担当者の方からよくいただきます。ブロックエディターが登場して数年、いよいよサイト全体をブロックで構築する時代が本格化してきました。ただ、クラシックテーマに慣れ親しんだ私たちからすると、FSEの概念やテーマ構築の手順は少し戸惑う部分もありますよね。 この記事では、FSEの基本構造から、実際の案件で使えるブロックテーマ構築のステップまで、実体験を交えながら解説していきます。 ・FSEの基本的な仕組みとクラシックテーマとの違い ・実務でブロックテーマを構築する際の具体的な手順 ・FSEの導入を検討すべき判断基準 そもそもフルサイト編集(FSE)とは、ヘッダーからフッターまで、サイトのすべての部分をブロックエディターで構築・管理できる仕組みのことです。従来のクラシックテーマでは、`header.php`や`footer.php`といったPHPファイルでレイアウトを制御していましたが、FSE対応のブロックテーマでは、主にHTMLファイル(ブロックマークアップ)と`theme.json`(テーマの設定ファイル)で構成されます。 実務でブロックテーマを構築する際、うちのチームでは以下のような手順を基本にしています。 1. `theme.json`での基本設定 まずは`theme.json`で、サイト全体のカラーパレット、タイポグラフィ、レイアウトの基本幅などを定義します。これが従来の`style.css`の役割の大部分を担います。ここをしっかり作り込むことで、クライアントが運用する際のデザインのブレを防ぐことができます。 2. テンプレートパーツの作成 次に、ヘッダーやフッターなど、複数ページで使い回す部分を「テンプレートパーツ」として作成します。ブロックエディター上で組み上げていくこともできますし、直接HTMLファイルとして記述することも可能です。 3. ページテンプレートの構築 最後に、トップページや個別記事、アーカイブページなどのテンプレートを作成します。これもすべてブロックで構成するため、PHPの知識がなくても直感的にレイアウトを組むことができます。 正直に言うと、最初は「全部ブロックで組むなんて面倒じゃないか?」と思っていました。しかし、一度`theme.json`の設定やブロックパターンの活用に慣れてしまうと、コーディングの記述量が圧倒的に減り、運用時の修正もエディター上で完結するため、結果的に保守性が高まることに気づきました。 ただし、すべての案件でFSEが適しているわけではありません。
| 項目 | 向いているケース | 向いていないケース |
|---|---|---|
| FSEの導入 | クライアントが自身で柔軟にレイアウトを変更したい場合 | 複雑なPHPの条件分岐や、独自データベースとの高度な連携が必要な場合 |
2. Gutenbergブロックの独自スタイルを追加する現場のカスタマイズ手法
実際の案件で、クライアントから「見出しブロックのデザインを、サイト独自の装飾から選べるようにしてほしい」というご相談をいただくケースがよくあります。かつてのクラシックエディター時代は、独自のクラスを手動で入力していただく運用が主流でした。しかし、ブロックエディターであるGutenbergが主流となった現在では、エディターの右側パネルからワンクリックでスタイルを切り替えられるように設定するのが現場での標準的なアプローチとなっています。 ここでは、実務で頻繁に使用する「ブロックスタイルの追加」について解説します。 まず、テーマの機能を追加・カスタマイズするファイルであるfunctions.phpに以下のコードを記述します。これにより、Gutenbergエディター内に独自のスタイル選択ボタンを追加することができます。
// functions.phpに記述します
// 'init'はWordPressの初期化処理のタイミングで実行されるアクションフックです
add_action( 'init', 'register_custom_block_styles' );
function register_custom_block_styles() {
// register_block_style関数で既存のブロックにスタイルを追加します
// 第一引数に対象のブロック名、第二引数にスタイルの詳細を指定します
register_block_style(
'core/heading', // 対象をコアの見出しブロックに指定
array(
'name' => 'custom-underline', // CSSクラスとして付与される識別名(is-style-custom-underlineとなります)
'label' => 'カスタムアンダーライン', // エディター上に表示されるラベル
'is_default' => false, // デフォルトのスタイルにするかどうか
)
);
}| 項目 | 向いているケース | 向いていないケース |
|---|---|---|
| ブロックスタイルの追加 | 見出しやボタンなど、頻繁にデザインを切り替えるブロックの場合 | サイト全体で統一した1つのデザインしか使用しないブロックの場合 |
3. 既存のクラシックテーマからフルサイト編集へ安全に移行する判断基準
クラシックテーマで構築された既存サイトを、FSE(フルサイト編集:ブロックエディターでサイト全体を編集できるWordPressの機能)対応テーマへ移行すべきかどうか。実際の案件でも、この相談を受けることが非常に増えています。 結論から言うと、すべてのサイトが今すぐFSEに移行する必要はありません。FSEは強力な機能ですが、サイトの規模や運用体制によって、移行によるメリットよりも学習コストや改修コストが上回るケースがあるからです。 ここでは、実案件で私たちがお客様に提案する際の「判断基準」をシェアします。迷ったときは、以下の表を参考にしてみてください。
| 項目 | 向いているケース | 向いていないケース |
|---|---|---|
| サイト規模 | 小〜中規模のコーポレートサイト、ブログ | 複雑なカスタムフィールドや独自のPHP処理が大量にある大規模サイト |
| 運用体制 | クライアント自身でヘッダーやフッターも含めて柔軟に変更したい場合 | 更新担当者がHTML/CSSの知識を持たず、決められたフォーマットでのみ更新したい場合 |
| 予算と期間 | 既存サイトのリニューアル時期と重なり、十分な設計・検証期間を確保できる場合 | 短期間・低予算でのテーマ変更のみを希望する場合 |
4. 実案件で頻出するGutenbergのレイアウト崩れを防ぐ具体的なCSS設計
Gutenberg(ブロックエディター)を使った案件で、納品後にクライアントが記事を更新したら、スマホ表示でレイアウトが大きく崩れてしまった。そんな経験はありませんか。 ブロックエディターは直感的な操作ができる反面、グループブロックやカラムブロックを深くネスト(入れ子にすること)しがちです。その結果、意図しない余白の相殺や幅の超過が発生し、横スクロールが生じてしまうトラブルが頻発します。 以前、企業サイトのオウンドメディア構築案件で、クライアントが独自に見出しと画像をグループ化して配置した際、モバイル端末で左右の余白が完全に消えてしまう問題に当たりました。原因は、WordPressコアが出力するデフォルトのコンテナ幅と、テーマ側で設定したCSSのパディングが競合していたことでした。 そのトラブル以降、eBIZクリエイトではブロックのネストに依存しない、堅牢なCSS設計をデフォルトのルールとして採用しています。
コンテナ幅の制御はtheme.jsonとCSSで役割を分ける
フルサイト編集(FSE)が普及して以降、レイアウトの基本設定はtheme.json(テーマの基本設定を定義するファイル)で行うのが基本です。しかし、すべてのスタイルをtheme.jsonに依存すると、複雑なネスト構造に対応しきれなくなります。 実務では、全体の最大幅や基本的な余白はtheme.jsonで設定し、予期せぬレイアウト崩れを防ぐための防御的なスタイルをテーマのstyle.cssに記述しています。 以下は、横揺れ(意図しない横スクロール)を防ぎつつ、画像やグループブロックが画面幅をはみ出さないようにするための基本的なCSSです。テーマのstyle.cssに記述します。/<strong> style.cssに記述:Gutenbergのレイアウト崩れを防ぐベーススタイル </strong>/
/<strong> 1. 予期せぬ横スクロールを完全に防ぐ </strong>/
body {
overflow-x: hidden; /<strong> 画面幅を超える要素を隠す </strong>/
width: 100%;
}
/<strong> 2. 画像や動画がコンテナをはみ出すのを防ぐ </strong>/
.wp-block-image img,
.wp-block-embed iframe {
max-width: 100%; /<strong> 親要素の幅を超えないように制御 </strong>/
height: auto; /<strong> アスペクト比を維持 </strong>/
}
/<strong> 3. グループブロックのネストによる余白消失を防ぐ </strong>/
.wp-block-group {
box-sizing: border-box; /<strong> パディングを幅に含める </strong>/
padding-right: 1.5rem; /<strong> スマホ閲覧時を考慮した最低限の左右余白 </strong>/
padding-left: 1.5rem;
}
/<strong> 4. フル幅(全幅)指定時のグループブロックの余白調整 </strong>/
.alignfull > .wp-block-group {
padding-right: 0; /<strong> 全幅設定の場合は余白をリセット </strong>/
padding-left: 0;
}なぜこの書き方が推奨されるのか
この書き方をおすすめする理由は、WordPressのコアスタイルがアップデートで変更された場合でも、影響を最小限に抑えられるからです。 GutenbergのコアCSSはバージョンアップに伴い、余白の計算方法や出力されるクラス名が微妙に変更されることがあります。そのため、`.wp-block-group__inner-container`のような深い階層の固有クラスに直接スタイルを当てるのはリスクが伴います。 上記のように、大枠の要素に対して標準的なCSSの振る舞い(box-sizingなど)を強制することで、将来的なメジャーアップデートに対しても壊れにくい構造を作ることができます。よくある間違いと注意点
やりがちですが避けた方がよいのは、すべてのブロックに対して`!important`を使って強制的にマージンを上書きすることです。これをやってしまうと、エディター画面(管理画面)とフロント側(公開画面)で見た目が大きく乖離してしまい、クライアントが直感的に編集できなくなります。 もし特定のページだけで特別なレイアウトを組みたい場合は、ブロックの「高度な設定」から独自のCSSクラス(例:`custom-lp-section`)を付与し、そのクラスに対してのみスタイルを当てるようにしてください。CSS設計のアプローチまとめ
| 項目 | 向いているケース | 向いていないケース |
|---|---|---|
| theme.jsonでの制御 | サイト全体のベースカラーやフォント、基本的なコンテンツ幅を一括管理する場合 | 複雑なアニメーションや、特定の親要素に依存する細かい余白調整が必要な場合 |
| style.cssでの防御的記述 | ネストによる横スクロール防止や、画像のはみ出しなど、構造的な崩れを防ぐ場合 | ブロックごとの個別の色変更など、エディター側で完結できる装飾的なスタイルの場合 |
| 独自クラスの付与 | ランディングページなど、特定の箇所だけ通常とは異なるレイアウトを適用したい場合 | すべての段落や見出しなど、サイト全体で共通する基本ルールに適用する場合 |
5. 保守性と運用効率を高めるためのブロックパターン活用事例と運用ルール
フルサイト編集(FSE)やGutenbergのブロックエディターを使ったWeb制作において、ブロックパターンは非常に便利な機能です。しかし、実際の案件で運用を始めると「どのパターンを使えばいいかわからない」「パターンが多すぎて管理画面が整理されていない」といったご相談をよくいただきます。 現場で運用していく中で、ブロックパターンはただ作成するだけでなく、明確な運用ルールを設けることで保守性が大きく向上することがわかりました。ここでは、eBIZクリエイトの実務で取り入れているパターンの活用事例と、現場で決めている運用ルールをシェアします。
ブロックパターンの実践的な活用事例
実務では、よく使うレイアウトやデザインパーツをパターンとして登録しておくことで、クライアント自身がページを更新する際の運用効率が格段に上がります。例えば、企業サイトにおける「お問い合わせへの導線(CTA)」や「スタッフ紹介のレイアウト」などが挙げられます。 以下は、独自のカテゴリを作成し、シンプルなボタン付きのCTAパターンを登録する際のコード例です。テーマの機能を追加・カスタマイズするファイルである`functions.php`に記述します。<?php
// カスタムパターンカテゴリの追加
add_action( 'init', 'ebiz_register_pattern_category' );
function ebiz_register_pattern_category() {
register_block_pattern_category(
'ebiz-cta',
array( 'label' => __( 'CTAエリア', 'ebiz-theme' ) )
);
}
// CTAパターンの登録
add_action( 'init', 'ebiz_register_cta_pattern' );
function ebiz_register_cta_pattern() {
register_block_pattern(
'ebiz-theme/cta-basic',
array(
'title' => __( '基本のCTA', 'ebiz-theme' ),
'categories' => array( 'ebiz-cta' ),
'description' => __( 'お問い合わせへの基本導線です。', 'ebiz-theme' ),
// エディターからコピーしたブロックのHTMLを記述します
'content' => '<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"><h2 class="wp-block-heading">お問い合わせはこちら</h2><div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex"><div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/contact/">無料相談をする</a></div></div></div></div>',
)
);
}実案件で決めている運用ルール
以前の案件で、すべてのレイアウトをパターン化してクライアントにお渡ししたところ、かえって選択肢が増えすぎて使いこなせないという失敗がありました。それ以降、以下のルールを案件のデフォルトとしています。 1. 登録するパターンを厳選する クライアントが日常的な更新(ブログ記事や事例紹介など)で本当に使うレイアウトのみをパターン化します。一度しか使わないような複雑なレイアウトは、固定ページ内に直接組むようにしています。 2. 命名規則を統一する 「青いボタンのレイアウト」といった見た目ベースの名称ではなく、「サービス紹介用:3カラム」のように、用途が直感的にわかる名前をつけます。 3. 不要なデフォルトパターンを非表示にする WordPress本体が提供しているデフォルトパターンが多すぎると、独自のパターンが埋もれてしまいます。案件によっては、テーマ設定(`theme.json`など)でデフォルトパターンをオフにし、専用のものだけを表示するよう制御します。ブロックパターンが向いているケースと向いていないケース
| 項目 | 向いているケース | 向いていないケース |
|---|---|---|
| ブロックパターンの活用 | 記事や固定ページで何度も同じレイアウトを使い回す場合 | サイト内で一度しか登場しない特殊なデザインのページの場合 |
| PHPでのパターン登録 | バージョン管理を行い、誤削除を防ぎたい場合 | クライアント自身が自由にパターンを追加・修正したい場合 |