theme.json

В WordPress 5.8 появился файл theme.json — это новый механизмом настройки редактора блоков, который влияет на фронт и бэк. Он создан чтобы обеспечить стандартизированный (канонический) контроль над настройками блоков.

Внедрение блоков увеличило количество нужных и ненужных настроек для разработчиков и пользователей - это стало проблемой, поэтому был создан файл theme.json - это единая точка конфигурации, которая включает в себя такие настройки как:

  • Какие опции настройки должны быть доступны или скрыты от пользователя.
  • Какие цвета, размеры шрифтов... доступны пользователю по умолчанию.
  • Определяет макет редактора по умолчанию (ширину и доступные выравнивания).

Дочерняя тема

  • Если в дочерней теме нет 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).

То есть плагин не обязателен — он просто даёт доступ к функциям раньше, чем они станут частью ядра.

Ссылки: