Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

「theme.json」をPHPから上書きする方法

WordPressのブロックテーマ(またはハイブリッドテーマ)で、基本の基本となるスタイル情報を出力する「theme.json」ファイル。

まずは、あんまりよく分からないという方のために冒頭で補足すると...。

theme.json」ファイルに記述されている内容は、以下のページにあるWordPressのデフォルトスタイルと共に生成され、ブロックテーマの設定であるサイトエディターからグローバルスタイルを編集した値へと書き換わった最終的なコードとして「global-styles-inline-css」というIDでHTML上にインラインスタイル(ファイルへのリンクではなく直接出力)されるようになっています。

つまりこの「theme.json」ファイルをうまく編集すれば、サイトエディターで編集することなく、基本的なスタイルの指定が完了するので、他のサイトでの流用などがとても楽になります。

「theme.json」ファイルは、通常、親テーマのファイルそのものを編集するか、子テーマにコピーしたファイルを編集して適用させます、というかこの方法以外に適用させる方法がないので、親テーマの更新時に上書きされないようバックアップ&復元を行うか、そのためだけに子テーマを使う必要があります。

また、慣れの問題ではあるのでしょうが、このファイルの形式である「json」は、「{}」「[]」や「,」などの扱いがとても厳格で、1つでも間違っているとエラーとなって適用されなくなってしまうことと、PHPやJSのようにコメントを書き記すことができないので、完全理解していないとエラーを起こしている箇所が分からず、イライラすることがあります。

これらを解消する方法として、WordPressでは「wp_theme_json_data_theme」というフックが用意されており、それを使うことでPHPファイルから「theme.json」の上書きが可能になります。

本サイト内の以下のページで配布している「Twenty Twenty-Two」「Twenty Twenty-Three」「Twenty Twenty-Four」用の「theme.json」上書き用プラグインは、各テーマ用の「theme.json」ファイルをPHPで認識できるように全行を書き換え、上記のフックを使用して上書きできるようにしたものです。

ただ、このプラグイン内のコードがどうなっているのかを理解していないと編集は難しいと思いますので、「theme.json」内のコードをPHPとして展開する方法などを補足事項として公開しておきます。

派生(フォーク)したテーマや子テーマで機能を適用させる方法

WordPressでは現在、「Twenty Twenty-Two」「Twenty Twenty-Three」「Twenty Twenty-Four」という3つのブロックテーマが歴代デフォルトテーマとして配布されていますので、ここではその中の「Twenty Twenty-Three(以降TT3と略)」の場合を例に説明します。

以下の手順で作成していきます。

  1. ファイルを作成して転送し、サイトへ適用する
  2. theme.jsonファイルをコピーして編集する
  3. 【おまけ】ものぐさな方向け..

ファイルの作成・転送・サイトへの適用

パソコン上で「theme-json.php」というファイルを作成し、以下のコードを挿入して保存します。

function sample_overwrite_theme_json($theme_json , $schema ='' ) {
$new_data = array(

);

return $theme_json->update_with( $new_data );
}
add_filter( 'wp_theme_json_data_theme', 'sample_overwrite_theme_json' );

フォークしたTT3テーマのフォルダ内、または子テーマのフォルダ内へ「theme-json.php」を転送します。

TT3の親テーマへ転送した場合、テーマ更新でこの内容は消失しますので、必ずフォークしたテーマか子テーマでおこなってください

フォークしたテーマ、または子テーマのfunctions.phpファイルへ以下のコードを追加します。

include get_theme_file_path( '/theme-json.php' );

theme.jsonの内容をコピーしてPHP形式の記述へ変更する

「ツール」→「テーマファイルエディター」で、TT3のtheme.jsonをコピーして、theme-json.phpへ貼り付けます。

以下に従って、テーマファイルエディターですべの行を編集します。

jsonの記述変更する文字列
「{」「 [」「array(」
「}」「)」
「:」「=>」
  1. たくさんの行がありますので慎重に行ってください。
  2. 「””」で囲まれた部分に使われている括弧は変更しないようにしてください。
  3. 編集に誤りがあるとエラーとなり、サイトが動作しないことがありますのでご注意ください。

先にファイルを作ってから転送、適用という手順にした場合、PHPファイルの記述に誤りがあるとサイトが停止してしまいますので、上記の手順で行うことをおすすめします

テーマファイルエディターの「ファイルを更新」をクリックして、何もエラーがでなければ、編集は完了です。

今後「theme-json.php」へ変更したいものを書いていけば、theme.jsonと同じ働きをします。

自分で作成するのが面倒な方向け..

ここまで手順を紹介してきましたが、コードの加工をするのも面倒だし..という方向けに、「Twenty Twenty-Three」のtheme.jsonファイルのコード変更・ユーザー定義関数化したものを以下で配布しますので自由に利用してください(その後編集しやすいよう、編集する大枠ごとに別ファイルにしています)。

 「HA Theme Json Changer」に入れているコードと同じユーザー定義関数名のまま提供します。一応重複チェックは入れていますが、プラグインと併用するとエラーになることがありますのでご注意ください。

累計ダウンロード数:26回

また、そもそも作成なんてできないという方は、冒頭でも紹介した以下のプラグインを利用してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します

WordPressのブロックテーマ作成・ブロックテーマのカスタマイズ方法
ブロックテーマでサイトの背景画像を設定する5つの方法