Декомпозиция theme.json
Файл theme.json может быть очень большим из-за чего его становится сложно поддерживать, поэтому иногда удобно разбить его на отдельные файлы поменьше.
Однако ни JSON-спецификация, ни WordPress theme.json (или любой «SamJSON») не умеют «импортировать» другие JSON-файлы.
Разделить можно только через сборку или PHP-фильтры, которые склеят куски в один объект до того, как его увидит WordPress.
WordPress ≥ 6.1 даёт четыре фильтра, самый удобный — wp_theme_json_data_theme.
Пример структуры файлов:
src/ ├─ tokens/ │ ├─ colors.json │ ├─ typography.json │ └─ spacing.json └─ settings.json
Пример склейки через PHP фильтр:
add_filter( 'wp_theme_json_data_theme', function( $theme_json ) { $parts = [ json_decode( file_get_contents( get_theme_file_path( 'tokens/colors.json' ) ), true ), json_decode( file_get_contents( get_theme_file_path( 'tokens/spacing.json' ) ), true ), ]; foreach ( $parts as $fragment ) { $theme_json->update_with( $fragment ); } return $theme_json; } );
--