Вариации стелей и theme.json

Вариации стилей (Style Variations) — это альтернативные версии theme.json в папке темы /styles/, которые позволяют пользователю переключать варианты оформления (цвета, типографика и т.п.) без создания отдельной темы.

Если в теме созданы json файлы вариаций стилей, то на странице админки Appearance > Editor > Styles > Browse styles появится возможность выбора настроек оформления:

Каждая вариация — это JSON-файл с теми же возможностями, что и основной theme.json.

Использование

Нужно создать в теме папку styles и в ней json файлы. Пример структуры:

mytheme/
├── theme.json              ← основной файл (по умолчанию)
└── styles/
	├── latte.json          ← вариация (напр. “для кофейни”)
	└── swashbuckler.json   ← вариация (напр. “для морского ресторана”)

Пример файла latte.json:

{
  "version": 3,
  "title": "Latte",
  "slug": "latte",
  "description": "Latte theme style variation",
  "settings": { ... },
  "styles": { ... }
}

Где в settings, styles нужно добавить новые параметры, которые заменят аналогичные параметры из theme.json. Структура такая же как в theme.json.

Доп параметры .json

Параметры ниже - будут работать только для json файла вариации стилей, который расширяет базовый theme.json файл темы.

title

Название вариации стилей. Если не определено, будет использовано имя файла вариации.

{
	"version": 3,
	"title": "Настройки темы МОЯ_ТЕМА",
	...
}
slug

Идентификатор вариации стилей (в kebab-case). Если не определено, будет сгенерирован автоматически на основе title.

{
	"version": 3,
	"slug": "my-theme-variation",
	...
}
description

Описание вариации стилей. Может отображаться в интерфейсе WordPress. Необязательное поле.

{
	"version": 3,
	"description": "Тёмная тема с акцентом на контрастные цвета.",
	...
}
blockTypes

Список блоков, к которым относится данная вариация.

Позволяет ограничить вариацию только определёнными типами блоков. Применяется редко.

{
	"version": 3,
	"blockTypes": [ "core/paragraph", "core/heading" ],
	...
}

Как это работает

  • WordPress автоматически сканирует все файлы в папке /styles/ и показывает их в редакторе сайта.

  • При выборе вариации её данные сохраняются в БД как кастомные настройки, которые переопределяют настройки theme.json.
    Настроки сохраняются в таблице wp_posts, в поле post_content типа поста wp_global_styles.

ВАЖНО: Если пользователь уже выбрал вариацию, то обновления файла не применяются (данные из БД важнее). Чтобы обновления вступили в силу, нужно выбрать другую вариацию и вернуться назад.

Что не работает в вариациях

Вариации не поддерживают следующией параметры (они будут проигнорированы, если указаны):

  • customTemplates
  • templateParts
  • patterns
  • settings - некоторые настройки игнорируются

Где хранятся данные

Данные указаныне в json файле вариации стилей + кастомные правки стилей от пользователя, сохраняются в таблице wp_posts, в поле post_content типа поста wp_global_styles.

+-----------------------+----------------------------------------------------------------------+
| Field                 | Value                                                                |
+-----------------------+----------------------------------------------------------------------+
| ID                    | 21                                                                   |
| post_author           | 1                                                                    |
| post_date             | 2025-05-29 23:38:02                                                  |
| post_date_gmt         | 2025-05-29 23:38:02                                                  |
| post_content          | {"styles":{"spacing":{"padding":{"top":"0px","right":"var:preset|spa |
|                       | cing|3xs","bottom":"0px","left":"var:preset|spacing|3xs"}},"css":".f |
|                       | oooooooooo {\n   color: red;\n}"},"settings":[],"isGlobalStylesUserT |
|                       | hemeJSON":true,"version":3}                                          |
| post_title            | Custom Styles                                                        |
| post_excerpt          |                                                                      |
| post_status           | publish                                                              |
| comment_status        | closed                                                               |
| ping_status           | closed                                                               |
| post_password         |                                                                      |
| post_name             | wp-global-styles-agnostic-design                                     |
| to_ping               |                                                                      |
| pinged                |                                                                      |
| post_modified         | 2025-06-19 12:47:51                                                  |
| post_modified_gmt     | 2025-06-19 12:47:51                                                  |
| post_content_filtered |                                                                      |
| post_parent           | 0                                                                    |
| guid                  | http://pbnwp.loc/blog/2025/05/29/wp-global-styles-agnostic-design/   |
| menu_order            | 0                                                                    |
| post_type             | wp_global_styles                                                     |
| post_mime_type        |                                                                      |
| comment_count         | 0                                                                    |
| url                   | http://pbnwp.loc/blog/2025/05/29/wp-global-styles-agnostic-design/   |
+-----------------------+----------------------------------------------------------------------+

ВАЖНО: Сохраняются только те значения параметров, которые отличаются от базовых в theme.json.

Связанные функции

Cписок функций связанных с вариациями стилей (theme.json styles variations):

Получение и обработка стилей:

Работа с WP_Theme_JSON:

Все остальные методы WP_Theme_JSON.

Резолвер данных:

Все остальные методы WP_Theme_JSON_Resolver, WP_Font_Face_Resolver.

Отличие от дочерней темы

Вариации стилей Дочерняя тема
Один JSON-файл Полная структура темы
Переопределяет theme.json Может переопределять всё
Хранится в /styles/ Это отдельная тема
Настройки сохраняются в БД Нет сохранения в БД

Вариации стилей подходят, если нужно предложить визуальные варианты оформления темы без дублирования темы. Для более глубоких изменений (PHP код, шаблоны и т.д.) лучше использовать дочернюю тему.