先日ブロックテーマで編集可能なテーマを作成しました。
ブロックテーマを導入すると、サイトエディターのテンプレート編集モードを使えるようになります。
もうElementorいらないんじゃないかっていうくらい高機能で直感的、マジで驚きました。
そこでtheme.jsonの設定の仕方、テンプレートやブロックパ ターンの作成方法を詳しく解説します。
この記事は、簡単なブロックテーマが作成できる構成となっています。前編でベースのテンプレートを作成し、後編でページの追加や記事一覧などの設定の仕方をご紹介します。
かみーゆ/フロントエンドエンジニア
- 前編・ベースのテンプレート作成(←イマココ)
- 後編・記事一覧出力やページの追加
ブロックテーマ(Block themes) とは?
A block theme is a type of WordPress theme built using blocks. You can edit all parts of a block theme in the Site Editor.
WordPress supports block themes from version 5.9 and with limited support in version 5.8 with the Gutenberg plugin. Together with the Styles interface, block themes are part of full site editing. They are sometimes called full site editing themes. Learn about the background to full site editing.
Block themes / Theme Handbook
要約すると、ブロックテーマはブロックを使って構築できるワードプレスのテーマ。全てのパーツをサイトエディターを使って編集可能で、この機能はバージョン5.9(5.8ではプラグインを使って限定的)からサポートされました。footerやheaderなどの部分まで 見たまんま直感的に編集可能 になりました。
使った感じは直感的に編集できるテーマElementorに近いです。
詳しく違いを知りたい方のためにクラシックテーマとブロックテーマとの比較を記事の最後にまとめています。
ブロックテーマ用ディレクトリを作成する
ブロックテーマはデフォルトのテーマtwentytwentytwoを参考に作成します。
今回はローカルにワードプレスなどを構築できる環境を用意してみました。
まずはローカル環境で試してみたい方はDockerでもLocalでも何でもいいと思います。
wp-content/themes/
内にブロックテーマを格納するための myblocktheme を作成します。
空でいいので以下の通り、ファイルとディレクトリを準備します。
myblocktheme/
├ index.php(※)
├ templates/
│ └ index.html
├ parts/
│ ├ header.html
│ └ footer.html
├ style.css
└ theme.json
テーマが有効になるよう、style.cssにコードを書きます。
/*
Theme Name: My Block Theme
Version: 1.0.0
Requires at least: 5.9
*/
テーマを有効化します。
空のテンプレート:インデックスというテンプレートができました。
構成ファイル theme.json の基本設定
構成ファイル theme.json を設定していきましょう。
theme.json はテーマやブロックがサポートする機能・レイアウト・スタイルなど、このJSONファイル一つで管理できます。
{
"$schema": "https://schemas.wp.org/wp/5.9/theme.json",
"version": 2
}
今回は主に5.9を参考にコードを紹介していくのですが、$schema
を上記のコードのように設定しておくと、theme.jsonの5.9と6.0のバージョンである 2 を補完(コーディング補助)してくれます。
index.htmlにプロックを追加できる場所を作る
それではテンプレートを作っていきます。
テンプレート index.html には以下のようなイメージで、headerとfooterを読み込ませます。
<!-- wp:template-part {"slug":"header", "tagName": "header"} /-->
<!-- wp:group {"tagName":"main"} -->
<main class="wp-block-group"></main>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer","tagName": "footer"} /-->
テンプレートHTMLには以下のようにブロック名を指定してHTMLのコメントで記述します。
必要に応じて要素を内包します。
<!-- wp:ブロック -->
<!-- /wp:ブロック -->
ブロックの書き方ですが、記述を少しでも間違えると、編集画面で以下のように表示されます。