theme.json
В WordPress 5.8 появился файл theme.json — это новый механизмом настройки редактора блоков, который влияет на фронт и бэк. Он создан чтобы обеспечить стандартизированный (канонический) контроль над настройками блоков.
Внедрение блоков увеличило количество нужных и ненужных настроек для разработчиков и пользователей - это стало проблемой, поэтому был создан файл theme.json - это единая точка конфигурации, которая включает в себя такие настройки как:
- Какие опции настройки должны быть доступны или скрыты от пользователя.
- Какие цвета, размеры шрифтов... доступны пользователю по умолчанию.
- Определяет макет редактора по умолчанию (ширину и доступные выравнивания).
- Дока (спецификация): https://developer.wordpress.org/block-editor/reference-guides/theme-json-reference/theme-json-living/
- Дока (использование): https://developer.wordpress.org/themes/global-settings-and-styles/
Дочерняя тема
-
Если в дочерней теме нет theme.json, WordPress использует theme.json родителя.
- Если в дочерней теме есть theme.json, WordPress объединяет оба файла: значения из ребёнка перекрывают одноимённые, а всё не заданное наследуется от родителя.
Подробнее здесь: https://fullsiteediting.com/lessons/child-themes/
Настройки для отдельных блоков
Через theme.json можно контролировать настройки на уровне отдельных блоков.
Примеры того, чего можно достичь:
- Использовать определенную предустановку для блока (например, таблицы), но общую для остальных блоков.
-
Включить UI-контроль размера шрифта для всех блоков, кроме блока заголовков.
- и т.д.
Как подключить файл theme.json?
Чтобы файл theme.json начал работать, его нужно создать в папке темы.
Если в теме нет файла theme.json, то используется дефолтный файл wp-includes/theme.json.
Где хранятся измененые стили
При редактировании настроект стилей в редакторе сайта, в базу данных сохраняется разница по сравнению с theme.json темы.
Эти изменения сохранятюся в таблицу wp_posts в post_type = wp_global_styles. Такая запись может быть одна для темы.
Важные поля:
-
post_content— хранит JSON измененных стилей. Этот JSON мержится с дыннами из theme.json. post_name— хранит ярлык отсылающий к теме к которой относятся стили. Шаблон такой:wp-global-styles-{theme_folder_name}. Нужно это потому что для разных тем могут быть разные стили.
Так например, если нужно сохранить (экспортировать) текущие стили, то можно сохранить контент этой из wp_posts.
Плагин Gutenberg
theme.json читают и ядро WordPress, и плагин Gutenberg. Разница в том, что:
- Ядро — содержит стабильную, уже принятые в релиз схему theme.json.
- Плагин Gutenberg — «ночная» сборка редактора. В нём появляются новые/экспериментальные поля theme.json, блоки и API до того, как они войдут в ядро. Плагин ставят разработчики, чтобы протестировать свежие возможности или пользоваться ими на старых версиях WP (< 5.8).
То есть плагин не обязателен — он просто даёт доступ к функциям раньше, чем они станут частью ядра.
Ссылки:
- WordPress plugin: https://wordpress.org/plugins/gutenberg
- Схему расширенных настроек можно посмотреть по этой ссылке https://schemas.wp.org/trunk/theme.json
