いつでもサイトエディターからサイトの見た目の変更ができるWordPressのブロックテーマ。
特に会社のサイトを内製化していたり、個人でサイトを作ろうとしている人にとっては、ブロック編集(ブロックエディター)の自由度をサイトのスタイル作りに使える画期的な機能だと思います。
ただ、ブロックテーマを触っていて使いにくい点というか困る点があります。
それはテーマの更新によるトラブルと、流用時のトラブルです。
ブロックテーマでは、テーマを有効化した後にサイトエディターで編集すると、以下のような形でデータベース内の投稿や固定ページのデータを保存するpostsテーブル内へ以下のカスタム投稿タイプ(投稿や固定ページとは別のコンテンツの集まり)として保存される仕組みになっています。
| 部品 | 投稿タイプ |
|---|---|
| テンプレート | wp_template |
| テンプレートパーツ | wp_template_part |
| ナビゲーションメニュー | wp_navigation |
| theme.json用のスタイル | wp_global_styles |
例えば訪問者が、とある投稿ページへアクセスした時には、これらのカスタマイズデータがあるかどうかを判別し、データがあればそれを通じて、なければテーマに封入されているファイルを通じて表示させるといった処理を繰り返しています。
また、サイトエディターから「エクスポート」を行うと、テーマに封入されているファイルに対して、現在保存されているデータベース上のデータとの比較をして、変更されているものは上書きし、足りないものは追加して、テーマを使いまわしたいサイトですぐに現状の状態を再現できるようになっています。
つまり前者は「テーマのファイルが変更されたとしても、サイトの管理者が行った編集した内容は維持されるようにする」ためのものであり、後者は「サイトエディターへ編集したものを確実に別のサイトへ引き継ぐ」ためのものであるということです。
以前からあるクラシックテーマやハイブリッドテーマは、テンプレートやパーツなど、すべてがファイルで管理されていて、テーマディレクトリごと移植すれば現状の状態のまま移行できるという単純な構造になっていたため、何で?どうして?となってしまうのです。
この違いを理解しているとここから先に紹介する不具合や不都合が発生するケースがなぜ発生するのか?どう対処したらいいのかが見えてきます。
テンプレートやパーツを変更したテーマに更新したのに古いままになってしまう
先ほど書いたように、ブロックテーマは後から加工したもの(サイトエディターで変更して保存したもの)はすべてデータベーステーブル内にデータとして保存されるようになっており、これはテーマ本体に変更があっても同一のパーツやテンプレートであれば加工したものが優先される、そして何よりテーマの更新によってカスタマイズしたものが消失しないような機構になっています。
つまり、クラシックテーマでいう子テーマ的な役割を、データベースのデータという形で保管して保護する仕組みになっているのです。
従って、例えば同じテーマで、投稿テンプレートがあったとして、既にカスタマイズ済のものが保存されている場合には、投稿テンプレートを変更したブロックテーマ本体を更新しても、カスタマイズしたものが使われるので、「あれ?新バージョンのテンプレートを使いたくてテーマ更新したのに反映されない..」となってしまうのです。
これを解決するには以下の2つの方法があります。
- サイトエディター上でデフォルトに戻したいテンプレートやパーツのリセットをする(テンプレートやパーツの一覧で三点リーダーをクリックしてリセットを選択する)
- 新しいバージョンのテンプレートパーツのHTMLデータをサイトエディター上でそっくり移植して保存する
前者はカスタマイズしたテンプレートやパーツの情報をデータベースから削除してデフォルトのものが使われるようにする措置、後者は手動でテンプレートをデフォルトのものにして保存しなおすという措置になります。
いずれの方法でも構いませんが、一旦現在のテンプレートやパーツのHTMLのバックアップ(ブロックすべてを選択してメモ帳などにコピーして保存)を必ず行い、デフォルトに戻した状態でも旧来必要で追加していたカスタマイズ内容を復元するようにしてください。
エクスポートしたテーマを別サイトにインストールしたらデフォルトに戻らない
ブロックテーマのエクスポート機能は、先に説明した通り、現在データベースに保存されているデータと、ファイルとして保存されているデフォルトの情報を比較して、足りないものは足し、変更されているものは変更して1つのテーマとしてバックアップを取る機能です。
従って、例えばテンプレートやパーツの内容を変更したり、スタイルを変更したり、WordPress標準テーマによくあるスタイルバリエーション(ボタン一発で全体のスタイル定義を変更できる機能)でデフォルト以外のものを選択して加工した後にテーマのエクスポートを行えば、エクスポートしたテーマは加工したものがデフォルトとなっているものに変わってしまうのです。
以上、ブロックテーマはデータベースのデータというのが絡む分一見複雑に見えますが、機構が分かっていれば対処できます。
そしてデフォルトで保持するためのテーマテスト用サイトを1つ作り、そこで必ずテーマの編集を最新にするようにすることが、この混乱を最小限に抑えるコツかも知れません(少なくとも私はそのように管理しています)。

コメントを残す