WordPress 6.1では、異なるデータレイヤーで提供されるtheme.json
データにフックするためのサーバーサイドフィルターがいくつか導入されました:
wp_theme_json_data_default
:WordPressによって提供されるデフォルトデータにフックしますwp_theme_json_data_blocks
:ブロックによって提供されるデータにフックしますwp_theme_json_data_theme
:テーマによって提供されるデータにフックしますwp_theme_json_data_user
:ユーザーによって提供されるデータにフックします
各フィルターは、対応するレイヤーのデータを持つWP_Theme_JSON_Data
クラスのインスタンスを受け取ります。新しいデータを提供するには、フィルターコールバックがupdate_with( $new_data )
メソッドを使用する必要があります。ここで、$new_data
は有効なtheme.json
-のような構造です。すべてのtheme.json
と同様に、新しいデータは、theme.json
のどのversion
を使用しているかを宣言する必要があります。そうすれば、異なる場合にはランタイムのものに正しく移行できます。
例:
テーマの新しいカラーパレットを渡し、テキストカラーUIを無効にする方法は次のとおりです:
function wpdocs_filter_theme_json_theme( $theme_json ){
$new_data = array(
'version' => 2,
'settings' => array(
'color' => array(
'text' => false,
'palette' => array( /* New palette */
array(
'slug' => 'foreground',
'color' => 'black',
'name' => __( 'Foreground', 'theme-domain' ),
),
array(
'slug' => 'background',
'color' => 'white',
'name' => __( 'Background', 'theme-domain' ),
),
),
),
),
);
return $theme_json->update_with( $new_data );
}
add_filter( 'wp_theme_json_data_theme', 'wpdocs_filter_theme_json_theme' );