WP_Theme_JSON

Класс, инкапсулирующий обработку структур, соответствующих спецификации theme.json
Класс WordPress
WordPress Icon
Содержание
  1. Описание класса
  2. Методы
  3. append_to_selector()
  4. compute_preset_classes()
  5. compute_preset_vars()
  6. compute_style_properties()
  7. compute_theme_vars()
  8. convert_custom_properties()
  9. convert_variables_to_value()
  10. do_opt_in_into_settings()
  11. filter_slugs()
  12. flatten_tree()
  13. get_blocks_metadata()
  14. get_block_classes()
  15. get_block_element_selectors()
  16. get_block_nodes()
  17. get_block_selectors()
  18. get_block_styles()
  19. get_css_variables()
  20. get_custom_css()
  21. get_custom_templates()
  22. get_data()
  23. get_default_slugs()
  24. get_element_class_name()
  25. get_feature_declarations_for_node()
  26. get_from_editor_settings()
  27. get_layout_styles()
  28. get_merged_preset_by_slug()
  29. get_metadata_boolean()
  30. get_name_from_defaults()
  31. get_patterns()
  32. get_preset_classes()
  33. get_property_value()
  34. get_raw_data()
  35. get_root_layout_rules()
  36. get_settings()
  37. get_settings_slugs()
  38. get_settings_values_by_slug()
  39. get_setting_nodes()
  40. get_stylesheet()
  41. get_styles_block_nodes()
  42. get_styles_for_block()
  43. get_style_nodes()
  44. get_svg_filters()
  45. get_template_parts()
  46. has_properties()
  47. is_safe_css_declaration()
  48. maybe_opt_in_into_settings()
  49. merge()
  50. prepend_to_selector()
  51. process_blocks_custom_css()
  52. remove_indirect_properties()
  53. remove_insecure_properties()
  54. remove_insecure_settings()
  55. remove_insecure_styles()
  56. remove_keys_not_in_schema()
  57. replace_slug_in_string()
  58. resolve_custom_css_format()
  59. resolve_variables()
  60. sanitize()
  61. scope_selector()
  62. set_spacing_sizes()
  63. should_override_preset()
  64. to_ruleset()
  65. update_separator_declarations()
  66. __construct()
  67. Примеры использования
  68. Создание экземпляра класса WP_Theme_JSON
  69. Добавление подселектора к существующему
  70. Вычисление стилей для предустановленных классов
  71. Извлечение CSS-переменных для пользовательских значений
  72. Вопросы и ответы
  73. Как получить данные из файла theme.json?
  74. Как получить список стилей блока из theme.json?
  75. Как получить список классов блока из theme.json?
  76. Как получить список настроек блока из theme.json?
  77. Как получить список шаблонов страниц из активной темы?
  78. Как получить список паттернов из theme.json?
  79. Как получить список CSS-переменных из theme.json?
  80. Как применить CSS-стили из theme.json к стилям блока?
  81. Как преобразовать внутреннее представление переменных в CSS-представление?

Описание класса

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

Методы

  • __construct — Конструктор.
  • append_to_selector — Добавляет подселектор к существующему.
  • compute_preset_classes — Возвращает сгенерированные правила для классов предустановленных значений настроек.
  • compute_preset_vars — Извлекает CSS-переменные для предустановленных значений настроек и добавляет их в массив $declarations.
  • compute_style_properties — Извлекает свойства стиля из массива $styles и добавляет их в массив $declarations.
  • compute_theme_vars — Извлекает CSS-переменные для пользовательских значений настроек и добавляет их в массив $declarations.
  • convert_custom_properties — Преобразует внутреннее представление переменных в представление CSS.
  • convert_variables_to_value — Заменяет CSS-переменные их значениями на месте.
  • do_opt_in_into_settings — Включает некоторые настройки.
  • filter_slugs — Удаляет предустановленные значения, чей идентификатор совпадает с заданными идентификаторами.
  • flatten_tree — Создает плоское дерево, объединяя ключи и связывая значения с новыми ключами.
  • get_block_classes — Преобразует каждый раздел стиля в список правил, содержащих стили блока для добавления в таблицу стилей.
  • get_block_element_selectors — Генерирует все селекторы элементов для блока.
  • get_block_nodes — Внутренний метод для получения узлов блока из файла theme.json.
  • get_block_selectors — Возвращает метаданные селекторов для блока.
  • get_block_styles — Преобразует каждый раздел стиля в список правил, содержащих стили блока для добавления в таблицу стилей.
  • get_blocks_metadata — Возвращает метаданные для каждого блока.
  • get_css_variables — Преобразует каждый раздел стиля в список правил для добавления в таблицу стилей.
  • get_custom_css — Возвращает пользовательский CSS для глобальных стилей.
  • get_custom_templates — Возвращает шаблоны страниц активной темы.
  • get_data — Возвращает действительный theme.json, предоставленный темой.
  • get_default_slugs — Возвращает словарь со значениями по умолчанию для всех предустановленных значений в виде ассоциативного массива, где ключи — это пути к предустановленным значениям, а значения — это список идентификаторов.
  • get_element_class_name — Возвращает имя класса по имени элемента.
  • get_feature_declarations_for_node — Генерирует объявления стилей для функций узла, таких как цвет, граница, типографика и т. д., которые имеют пользовательские селекторы в связанных метаданных блока.
  • get_from_editor_settings — Преобразует заданные настройки редактора в формат theme.json.
  • get_layout_styles — Получает CSS-правила макета для конкретного блока из определений макета theme.json.
  • get_merged_preset_by_slug — Возвращает массив предустановленных значений, сгруппированных по идентификатору.
  • get_metadata_boolean — Возвращает значение для метаданных, которые могут быть логическими значениями или путями к логическим значениям.
  • get_name_from_defaults — Возвращает имя предустановленного значения default по заданному идентификатору.
  • get_patterns — Возвращает желаемые шаблоны (идентификаторы) текущей темы для регистрации из каталога шаблонов.
  • get_preset_classes — Создает новые правила в виде классов для каждого предустановленного значения.
  • get_property_value — Возвращает свойство стиля для заданного пути.
  • get_raw_data — Возвращает необработанные данные.
  • get_root_layout_rules — Выводит CSS-правила макета для корневого элемента.
  • get_setting_nodes — Создает метаданные для узлов настроек в виде массива.
  • get_settings — Возвращает существующие настройки для каждого блока.
  • get_settings_slugs — Аналогично get_settings_values_by_slug, но не вычисляет значение.
  • get_settings_values_by_slug — Возвращает предустановленные значения, сгруппированные по идентификатору.
  • get_style_nodes — Создает метаданные для узлов стилей в виде массива.
  • get_styles_block_nodes — Публичный вспомогательный метод для получения узлов блока из файла theme.json.
  • get_styles_for_block — Получает CSS-правила для конкретного блока из theme.json.
  • get_stylesheet — Возвращает таблицу стилей, полученную в результате обработки структуры theme.json, представленной этим объектом.
  • get_svg_filters — Преобразует все предустановленные значения фильтров (двутона) в SVG.
  • get_template_parts — Возвращает данные о частях шаблона активной темы.
  • has_properties — Проверяет, содержит ли метаданные ключ с именем properties.
  • is_safe_css_declaration — Проверяет, является ли предоставленное пользователем объявление безопасным.
  • maybe_opt_in_into_settings — Включает некоторые настройки по умолчанию, если тема объявила поддержку.
  • merge — Объединяет новые входные данные.
  • prepend_to_selector — Добавляет подселектор к существующему.
  • process_blocks_custom_css — Обрабатывает CSS для применения вложенности.
  • remove_indirect_properties — Удаляет косвенные свойства из заданного входного узла и устанавливает их в заданный выходной узел.
  • remove_insecure_properties — Удаляет небезопасные данные из theme.json.
  • remove_insecure_settings — Обрабатывает узел настроек и возвращает тот же узел без небезопасных настроек.
  • remove_insecure_styles — Обрабатывает узел стилей и возвращает тот же узел без небезопасных стилей.
  • remove_keys_not_in_schema — Удаляет ключи, отсутствующие в схеме, из заданного дерева.
  • replace_slug_in_string — Преобразует идентификатор в CSS-пользовательское свойство.
  • resolve_custom_css_format — Преобразует внутреннее представление переменных в представление CSS.
  • resolve_variables — Разрешает значения CSS-переменных в заданных стилях.
  • sanitize — Очищает входные данные в соответствии со схемами.
  • scope_selector — Функция, которая создает область видимости для селектора. Работает аналогично вложенности SCSS, за исключением того, что оператор & не поддерживается.
  • set_spacing_sizes — Устанавливает массив spacingSizes на основе значений spacingScale из theme.json.
  • should_override_preset — Определяет, следует ли переопределить предустановленное значение или нет. (устарело)
  • to_ruleset — Создает соответствующий правилу селектор и список объявлений.
  • update_separator_declarations — Возвращает отфильтрованный массив объявлений, если есть блок-разделитель, в котором определено только свойство фона в theme.json, добавляя атрибут цвета, чтобы отразить изменения на фронтенде.

Методы

append_to_selector()

Метод append_to_selector() класса WP_Theme_JSON используется для добавления подселектора к существующему селектору.

Метод принимает два обязательных аргумента: оригинальный селектор и селектор, который нужно добавить.

Результатом работы метода является новый селектор, полученный путем добавления подселектора к оригинальному селектору.

WP_Theme_JSON::append_to_selector( string $selector, string $to_append ): string

Метод append_to_selector() принимает две строки в качестве аргументов: оригинальный селектор и селектор, который нужно добавить. Возвращает строку — новый селектор.

$selector (string) — Обязательный. Оригинальный селектор.

$to_append (string) — Обязательный. Селектор, который нужно добавить.

Метод append_to_selector() возвращает новый селектор в виде строки.


/**
 * Пример использования метода append_to_selector()
 *
 * Добавляет подселектор к оригинальному селектору.
 *
 * @param string $original_selector Оригинальный селектор.
 * @param string $to_append Селектор, который нужно добавить.
 * @return string Новый селектор.
 */
$original_selector = 'body';
$to_append = ' .container';
$new_selector = WP_Theme_JSON::append_to_selector( $original_selector, $to_append );

В данном примере метод append_to_selector() используется для добавления подселектора .container к оригинальному селектору body. Результатом работы метода будет новый селектор body .container.

compute_preset_classes()

Метод compute_preset_classes() класса WP_Theme_JSON используется для обработки структур, соответствующих спецификации theme.json. Он принимает массив настроек и возвращает сгенерированные наборы правил для предустановленных классов.

WP_Theme_JSON::compute_preset_classes( array $settings, string $selector, string[] $origins ): string

Метод compute_preset_classes() принимает следующие параметры:

  • $settings (обязательный) — настройки для обработки.
  • $selector (обязательный) — селектор, обрамляющий классы.
  • $origins (обязательный) — список источников для обработки.

$settings (array) — Обязательный. Настройки для обработки.

$selector (string) — Обязательный. Селектор, обрамляющий классы.

$origins (string[]) — Обязательный. Список источников для обработки.

Метод compute_preset_classes() возвращает результат обработки предустановленных классов в виде строки.

<?php
$settings = array(
    // Настройки для обработки
);
$selector = '.my-selector';
$origins = array(
    'origin1',
    'origin2',
);
$result = WP_Theme_JSON::compute_preset_classes( $settings, $selector, $origins );
echo $result;
?>

В приведенном выше примере кода мы создаем массив $settings с настройками для обработки. Затем мы указываем селектор $selector и список источников $origins. Затем мы вызываем метод compute_preset_classes() с этими параметрами и сохраняем результат в переменную $result. Наконец, мы выводим результат на экран.

compute_preset_vars()

Метод compute_preset_vars() класса WP_Theme_JSON используется для извлечения CSS Custom Properties для пресетов и добавления их в массив $declarations в соответствии с заданным форматом.

Метод принимает на вход настройки блока и список источников, которые необходимо обработать.

WP_Theme_JSON::compute_preset_vars( array $settings, string[] $origins ): array

Метод compute_preset_vars() принимает два обязательных параметра: $settings (массив настроек для обработки) и $origins (список источников для обработки).

$settings (array) — Обязательный. Настройки для обработки.

$origins (string[]) — Обязательный. Список источников для обработки.

Метод compute_preset_vars() возвращает измененный массив $declarations.

<code>// Пример использования метода compute_preset_vars()</code>
<code>$settings = array(
    'preset' => array(
        'color' => 'red',
        'background' => 'blue'
    )
);
$origins = array(
    'theme',
    'plugin'
);
$result = WP_Theme_JSON::compute_preset_vars( $settings, $origins );
// $result содержит измененный массив $declarations</code>

compute_style_properties()

Метод compute_style_properties() класса WP_Theme_JSON используется для извлечения свойств стиля из массива стилей и добавления их в массив $declarations в соответствии с форматом.

WP_Theme_JSON::compute_style_properties( array $styles, array $settings = array(), array $properties = null, array $theme_json = null, string $selector = null, boolean $use_root_padding = null ): array

Метод compute_style_properties() принимает следующие параметры:

  • $styles (обязательный) — массив стилей для обработки.
  • $settings (необязательный) — массив настроек темы. По умолчанию: array().
  • $properties (необязательный) — метаданные свойств. По умолчанию: null.
  • $theme_json (необязательный) — массив темы JSON. По умолчанию: null.
  • $selector (необязательный) — селектор блока стилей. По умолчанию: null.
  • $use_root_padding (необязательный) — добавлять ли пользовательские свойства на уровне корня. По умолчанию: null.

$styles (array) — Обязательный. Стили для обработки.

$settings (array) — Необязательный. Настройки темы. По умолчанию: array().

$properties (array) — Необязательный. Метаданные свойств. По умолчанию: null.

$theme_json (array) — Необязательный. Массив темы JSON. По умолчанию: null.

$selector (string) — Необязательный. Селектор блока стилей. По умолчанию: null.

$use_root_padding (boolean) — Необязательный. Добавлять ли пользовательские свойства на уровне корня. По умолчанию: null.

Метод compute_style_properties() возвращает измененный массив $declarations.

<code>// Пример использования метода compute_style_properties()
$styles = array(
  'color' => 'red',
  'background-color' => 'blue',
);
$settings = array(
  'font-size' => '16px',
);
$properties = array(
  'color' => array(
    'type' => 'color',
    'label' => 'Text Color',
  ),
  'background-color' => array(
    'type' => 'color',
    'label' => 'Background Color',
  ),
);
$theme_json = array(
  'version' => '1.0',
);
$selector = '.my-selector';
$use_root_padding = true;
$declarations = WP_Theme_JSON::compute_style_properties( $styles, $settings, $properties, $theme_json, $selector, $use_root_padding );

В данном примере метод compute_style_properties() принимает массив стилей $styles, массив настроек темы $settings, метаданные свойств $properties, массив темы JSON $theme_json, селектор блока стилей $selector и флаг $use_root_padding. Он обрабатывает стили и возвращает измененный массив $declarations.

compute_theme_vars()

Метод compute_theme_vars() является частью класса WP_Theme_JSON и используется для извлечения CSS-переменных пользовательских значений из массива настроек и добавления их в массив $declarations в соответствии с форматом.

WP_Theme_JSON::compute_theme_vars( array $settings ): array

Метод compute_theme_vars() принимает один обязательный параметр $settings — массив настроек, который нужно обработать. Возвращает метод модифицированный массив $declarations.

$settings (array) — Обязательный. Настройки, которые нужно обработать.

Метод compute_theme_vars() возвращает модифицированный массив $declarations.

<?php
/**
 * Пример использования метода compute_theme_vars()
 *
 * @param array $settings Настройки, которые нужно обработать.
 *
 * @return array Модифицированный массив $declarations.
 */
$declarations = WP_Theme_JSON::compute_theme_vars( $settings );
?>

convert_custom_properties()

Метод convert_custom_properties() класса WP_Theme_JSON используется для преобразования внутреннего представления переменных в представление CSS. Он используется для конвертации переменных, которые соответствуют спецификации theme.json.

WP_Theme_JSON::convert_custom_properties( string $value ): string

Метод convert_custom_properties() принимает один обязательный параметр $value, который представляет собой переменную, такую как var:preset|color|vivid-green-cyan, которую нужно преобразовать.

$value (string) — Обязательный. Переменная, такая как var:preset|color|vivid-green-cyan, которую нужно преобразовать.

Метод convert_custom_properties() возвращает преобразованную переменную в виде строки.

<?php
/**
 * Пример использования метода convert_custom_properties()
 */
// Переменная, которую нужно преобразовать
$value = 'var:preset|color|vivid-green-cyan';
// Вызов метода convert_custom_properties()
$converted_value = WP_Theme_JSON::convert_custom_properties( $value );
// Вывод преобразованной переменной
echo $converted_value;
?>

convert_variables_to_value()

Метод convert_variables_to_value() класса WP_Theme_JSON заменяет переменные CSS на их значения.

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

WP_Theme_JSON::convert_variables_to_value( array $styles, array $values ): array

Метод convert_variables_to_value() принимает два обязательных параметра:

  • $styles — массив с обязательными CSS-объявлениями, которые требуется преобразовать.
  • $values — массив с обязательными парами ключ => значение, которые будут использоваться для замены.
  • $styles (array) — Обязательный. CSS-объявления, которые требуется преобразовать.
  • $values (array) — Обязательный. Пары ключ => значение, которые будут использоваться для замены.

Метод convert_variables_to_value() возвращает массив.


$styles = array(
    'color' => 'var(--primary-color)',
    'background-color' => 'var(--secondary-color)',
);
$values = array(
    '--primary-color' => '#ff0000',
    '--secondary-color' => '#00ff00',
);
$converted_styles = WP_Theme_JSON::convert_variables_to_value( $styles, $values );

В данном примере мы имеем массив $styles с CSS-объявлениями, содержащими переменные CSS, и массив $values с парами ключ => значение, которые будут использоваться для замены. Метод convert_variables_to_value() применяется к массиву $styles и возвращает преобразованный массив $converted_styles, в котором переменные CSS заменены на их значения.

do_opt_in_into_settings()

Метод do_opt_in_into_settings() класса WP_Theme_JSON используется для включения некоторых настроек. Он позволяет активировать определенные настройки, которые могут быть определены в файле theme.json. Этот метод обрабатывает структуры, соответствующие спецификации theme.json.

WP_Theme_JSON::do_opt_in_into_settings( array $context )

Метод do_opt_in_into_settings() принимает один параметр:

  • $context (обязательный): Контекст, к которому относятся настройки. Это массив, содержащий информацию о контексте, в котором используются настройки.

/**
 * Пример использования метода do_opt_in_into_settings()
 */
$context = array(
  'theme' => 'my_theme',
  'plugin' => 'my_plugin',
  'context' => 'frontend',
  'settings' => array(
    'setting_1' => 'value_1',
    'setting_2' => 'value_2'
  )
);
WP_Theme_JSON::do_opt_in_into_settings( $context );

В приведенном выше примере кода создается массив $context, который содержит информацию о контексте, в котором используются настройки. Затем метод do_opt_in_into_settings() вызывается с этим массивом в качестве параметра. Это позволяет активировать определенные настройки, указанные в массиве $context.

Метод do_opt_in_into_settings() принимает следующий параметр:

  • $context (обязательный): Контекст, к которому относятся настройки. Это массив, содержащий информацию о контексте, в котором используются настройки.

Параметр $context должен быть массивом, содержащим следующие ключи:

  • 'theme': Имя темы, к которой относятся настройки.
  • 'plugin': Имя плагина, к которому относятся настройки (если применимо).
  • 'context': Контекст, в котором используются настройки (например, ‘frontend’, ‘backend’, ‘custom’, и т.д.).
  • 'settings': Массив настроек, которые должны быть включены.

Все ключи в массиве $context являются обязательными.

filter_slugs()

Метод filter_slugs() класса WP_Theme_JSON удаляет предустановленные значения, чей слаг (slug) совпадает с любым из указанных слагов.

WP_Theme_JSON::filter_slugs( array $node, array $slugs ): array

Метод filter_slugs() принимает два обязательных параметра: $node — узел с предустановленными значениями для проверки, и $slugs — слаги, которые не должны быть переопределены. Метод возвращает новый узел с отфильтрованными значениями.

$node (array) (обязательный): Узел с предустановленными значениями для проверки.

$slugs (array) (обязательный): Слаги, которые не должны быть переопределены.

Метод filter_slugs() возвращает новый узел с отфильтрованными значениями.

<code>// Узел с предустановленными значениями
$node = array(
    'color' => array(
        'value' => '#ffffff',
        'slug' => 'background-color',
    ),
    'font' => array(
        'value' => 'Arial',
        'slug' => 'font-family',
    ),
);
// Слаги, которые не должны быть переопределены
$slugs = array(
    'background-color',
);
// Фильтрация узла
$new_node = WP_Theme_JSON::filter_slugs( $node, $slugs );</code>

В приведенном примере метод filter_slugs() принимает узел $node с предустановленными значениями и массив $slugs с указанными слагами, которые не должны быть переопределены. Результатом работы метода будет новый узел $new_node с отфильтрованными значениями.

flatten_tree()

Метод flatten_tree() класса WP_Theme_JSON принимает дерево и создает его сплющенную версию, объединяя ключи и привязывая значения листьев к новым ключам. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::flatten_tree( array $tree, string $prefix = '', string $token = '--' ): array

Метод flatten_tree() принимает следующие параметры:

  • $tree (обязательный) — Входное дерево для обработки.
  • $prefix (необязательный) — Префикс, добавляемый к каждой переменной. По умолчанию: пустая строка.
  • $token (необязательный) — Токен, используемый между уровнями. По умолчанию: ‘—‘.

$tree (array) — Обязательный. Входное дерево для обработки.

$prefix (string) — Необязательный. Префикс, добавляемый к каждой переменной. По умолчанию: пустая строка.

$token (string) — Необязательный. Токен, используемый между уровнями. По умолчанию: ‘—‘.

Метод flatten_tree() возвращает сплющенное дерево в виде массива.

<?php
// Пример использования метода flatten_tree()
$tree = array(
    'color' => array(
        'primary' => '#ff0000',
        'secondary' => '#00ff00',
    ),
    'font' => array(
        'family' => 'Arial',
        'size' => '12px',
    ),
);
$prefix = 'theme';
$token = '__';
$flattened_tree = WP_Theme_JSON::flatten_tree( $tree, $prefix, $token );
// Вывод сплющенного дерева
print_r( $flattened_tree );
?>

Вывод:

Array
(
    [theme--color--primary] => #ff0000
    [theme--color--secondary] => #00ff00
    [theme--font--family] => Arial
    [theme--font--size] => 12px
)

get_blocks_metadata()

Метод get_blocks_metadata() класса WP_Theme_JSON возвращает метаданные для каждого блока. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_blocks_metadata(): array

Метод get_blocks_metadata() вызывается статически, без создания экземпляра класса WP_Theme_JSON. Он возвращает массив метаданных блоков.

Пример использования:


$blocks_metadata = WP_Theme_JSON::get_blocks_metadata();

В этом примере переменная $blocks_metadata будет содержать массив с метаданными блоков.

Метод get_blocks_metadata() возвращает массив метаданных блоков. Каждый элемент массива представляет собой метаданные одного блока.

get_block_classes()

Метод get_block_classes() преобразует каждый раздел стиля в список правил, содержащих стили блока, которые будут добавлены к таблице стилей. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_block_classes( array $style_nodes ): string

Метод get_block_classes() принимает один обязательный параметр:

  • $style_nodes (array) — Узлы со стилями. Обязательный параметр.

$style_nodes (array) — Узлы со стилями. Обязательный параметр.

Метод get_block_classes() возвращает новую таблицу стилей в виде строки.

<code>$style_nodes = array(
    array(
        'selector' => '.wp-block',
        'styles' => array(
            'color' => 'red',
            'background-color' => 'blue',
        ),
    ),
    array(
        'selector' => '.wp-block-heading',
        'styles' => array(
            'font-size' => '20px',
            'font-weight' => 'bold',
        ),
    ),
);
$theme_json = new WP_Theme_JSON();
$block_classes = $theme_json->get_block_classes( $style_nodes );</code>

get_block_element_selectors()

Метод get_block_element_selectors() класса WP_Theme_JSON генерирует все селекторы элементов для блока. Он используется для обработки структур, которые соответствуют спецификации theme.json.

WP_Theme_JSON::get_block_element_selectors( string $root_selector ): array

Метод get_block_element_selectors() принимает один обязательный параметр:

  • $root_selector (строка) — Корневой CSS-селектор блока.

$root_selector (строка, обязательный): Корневой CSS-селектор блока.

Метод get_block_element_selectors() возвращает массив селекторов элементов блока.


/**
 * Пример использования метода get_block_element_selectors()
 *
 * @param string $root_selector Корневой CSS-селектор блока.
 * @return array Массив селекторов элементов блока.
 */
$block_element_selectors = WP_Theme_JSON::get_block_element_selectors( $root_selector );

get_block_nodes()

Метод get_block_nodes() является внутренним методом класса WP_Theme_JSON и предназначен для получения блочных узлов из файла theme.json. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_block_nodes( array $theme_json ): array

Метод get_block_nodes() принимает один параметр:

  • $theme_json (array, обязательный) — Преобразованный в массив theme.json.

$theme_json (array, обязательный): Преобразованный в массив theme.json.

Метод get_block_nodes() возвращает массив блочных узлов в theme.json.


/**
 * Пример использования метода get_block_nodes()
 *
 * @param array $theme_json Преобразованный в массив theme.json.
 * @return array Массив блочных узлов в theme.json.
 */
$block_nodes = WP_Theme_JSON::get_block_nodes( $theme_json );

get_block_selectors()

Метод get_block_selectors() класса WP_Theme_JSON возвращает метаданные селекторов для блока.

Метод используется для получения пользовательских селекторов, установленных для блока.

WP_Theme_JSON::get_block_selectors( object $block_type, string $root_selector ): array

В данном примере показано, как использовать метод get_block_selectors() класса WP_Theme_JSON. Метод принимает два обязательных параметра: $block_type (объект типа блока) и $root_selector (корневой селектор блока). Метод возвращает массив пользовательских селекторов, установленных для блока.

$block_type (объект, обязательный): Тип блока.

$root_selector (строка, обязательная): Корневой селектор блока.

Метод get_block_selectors() возвращает массив пользовательских селекторов, установленных для блока.

<?php
/**
 * Пример использования метода get_block_selectors()
 */
// Создание объекта типа блока
$block_type = new WP_Block_Type();
// Установка корневого селектора блока
$root_selector = '.my-block';
// Получение пользовательских селекторов для блока
$selectors = WP_Theme_JSON::get_block_selectors( $block_type, $root_selector );
// Вывод пользовательских селекторов
foreach ( $selectors as $selector ) {
    echo $selector;
}
?>

В данном примере мы создаем объект типа блока, устанавливаем корневой селектор блока и получаем пользовательские селекторы для блока. Затем мы выводим пользовательские селекторы с помощью цикла foreach.

get_block_styles()

Метод get_block_styles() класса WP_Theme_JSON преобразует каждую секцию стилей в список правил, содержащих стили блоков, которые будут добавлены к таблице стилей. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_block_styles( array $style_nodes, array $setting_nodes ): string

Метод get_block_styles() принимает два обязательных параметра: $style_nodes (массив узлов со стилями) и $setting_nodes (массив узлов с настройками). Он возвращает новую таблицу стилей в виде строки.

$style_nodes (array) — Обязательный. Узлы со стилями.

$setting_nodes (array) — Обязательный. Узлы с настройками.

Метод get_block_styles() возвращает новую таблицу стилей в виде строки.


/**
 * Пример использования метода get_block_styles()
 *
 * @param array $style_nodes    Узлы со стилями.
 * @param array $setting_nodes  Узлы с настройками.
 *
 * @return string               Новая таблица стилей.
 */
function example_get_block_styles( $style_nodes, $setting_nodes ) {
    // Вызов метода get_block_styles() с передачей параметров
    $block_styles = WP_Theme_JSON::get_block_styles( $style_nodes, $setting_nodes );
    // Вывод результата
    echo $block_styles;
}

get_css_variables()

Метод get_css_variables() является частью класса WP_Theme_JSON и используется для преобразования каждого раздела стилей в список правил, которые будут добавлены к таблице стилей. Он принимает узлы с настройками и список источников для обработки.

WP_Theme_JSON::get_css_variables( array $nodes, string[] $origins ): string

Метод get_css_variables() принимает два параметра: $nodes (массив узлов с настройками) и $origins (список источников для обработки). Он возвращает новую таблицу стилей в виде строки.

$nodes (обязательный): Массив узлов с настройками.

$origins (обязательный): Список источников для обработки.

Метод get_css_variables() возвращает новую таблицу стилей в виде строки.


/**
 * Пример использования метода get_css_variables()
 *
 * @param array $nodes Массив узлов с настройками.
 * @param string[] $origins Список источников для обработки.
 *
 * @return string Новая таблица стилей.
 */
$css_variables = WP_Theme_JSON::get_css_variables( $nodes, $origins );

get_custom_css()

Метод get_custom_css() класса WP_Theme_JSON возвращает пользовательский CSS для глобальных стилей.

Этот метод используется для получения пользовательского CSS, который был определен в файле theme.json для глобальных стилей темы WordPress.

Метод get_custom_css() обрабатывает структуры, которые соответствуют спецификации theme.json.

WP_Theme_JSON::get_custom_css(): string

Этот код используется для вызова метода get_custom_css() класса WP_Theme_JSON и возвращает пользовательский CSS для глобальных стилей.

Пример использования:

// Получение пользовательского CSS для глобальных стилей
$custom_css = WP_Theme_JSON::get_custom_css();

Комментарии к коду:

  • Метод get_custom_css() вызывается статически, без создания экземпляра класса WP_Theme_JSON.
  • Метод возвращает пользовательский CSS в виде строки.

Метод get_custom_css() возвращает пользовательский CSS для глобальных стилей в виде строки.

get_custom_templates()

Метод get_custom_templates() является частью класса WP_Theme_JSON и предназначен для получения пользовательских шаблонов страниц активной темы.

Данный метод используется для извлечения списка пользовательских шаблонов страниц, которые были созданы в активной теме WordPress. Шаблоны страниц позволяют разработчикам создавать различные макеты и стили для отдельных страниц сайта.

Метод get_custom_templates() возвращает массив, содержащий пользовательские шаблоны страниц активной темы.

WP_Theme_JSON::get_custom_templates(): array

Метод get_custom_templates() вызывается статически, без необходимости создания экземпляра класса WP_Theme_JSON. Он возвращает массив, содержащий пользовательские шаблоны страниц активной темы.

Пример использования:


$custom_templates = WP_Theme_JSON::get_custom_templates();

В данном примере переменной $custom_templates будет присвоен массив с пользовательскими шаблонами страниц активной темы.

Метод get_custom_templates() возвращает массив, содержащий пользовательские шаблоны страниц активной темы.

get_data()

Метод get_data() класса WP_Theme_JSON представляет собой функцию, которая обрабатывает структуры, соответствующие спецификации theme.json.

Он возвращает действительный theme.json, предоставленный темой.

Метод get_data() используется для получения данных из theme.json файла темы WordPress.

WP_Theme_JSON::get_data();

Этот код возвращает массив данных из theme.json файла текущей темы WordPress.

Комментарии к коду:

  • WP_Theme_JSON — имя класса, в котором определен метод.
  • get_data() — имя метода, который вызывается.
  • array — тип данных, который возвращает метод.

Метод get_data() возвращает массив данных из theme.json файла текущей темы WordPress.

get_default_slugs()

Метод get_default_slugs() возвращает список стандартных слагов для всех пресетов в виде ассоциативного массива, где ключами являются пути к пресетам, а значениями — список слагов.

Этот метод является частью класса WP_Theme_JSON, который инкапсулирует обработку структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_default_slugs( array $data, array $node_path ): array

Метод get_default_slugs() принимает два обязательных параметра:

  • $data (array) — Структура, похожая на theme.json.
  • $node_path (array) — Путь для анализа. По умолчанию — ‘settings’.

Метод get_default_slugs() возвращает массив.

<?php
// Пример использования метода get_default_slugs()
$data = array(
    // структура theme.json
);
$node_path = array(
    // путь для анализа
);
$default_slugs = WP_Theme_JSON::get_default_slugs( $data, $node_path );
?>

В данном примере мы используем метод get_default_slugs() для получения списка стандартных слагов для заданной структуры theme.json и пути $node_path.

get_element_class_name()

Метод get_element_class_name() класса WP_Theme_JSON возвращает имя класса по имени элемента.

Класс WP_Theme_JSON инкапсулирует обработку структур, соответствующих спецификации theme.json.

WP_Theme_JSON::get_element_class_name( string $element ): string

Метод get_element_class_name() принимает один обязательный параметр:

  • $element (string) — Имя элемента.

Метод get_element_class_name() принимает следующий параметр:

  • $element (string) — Обязательный. Имя элемента.

Метод get_element_class_name() возвращает имя класса в виде строки.


/**
 * Получает имя класса по имени элемента.
 *
 * @param string $element Имя элемента.
 * @return string Имя класса.
 */
$element_class_name = WP_Theme_JSON::get_element_class_name( $element );

get_feature_declarations_for_node()

Метод get_feature_declarations_for_node() генерирует стилевые объявления для особенностей узла, таких как цвет, граница, типографика и т.д., которые имеют пользовательские селекторы в метаданных связанного блока.

Он используется для генерации стилей, которые будут применяться к узлу блока или его вариации в соответствии с указанными пользовательскими селекторами.

WP_Theme_JSON::get_feature_declarations_for_node( object $metadata, object $node ): array

Метод get_feature_declarations_for_node() принимает два обязательных параметра:

  • $metadata (объект) — Метаданные связанного блока, содержащие селекторы.
  • $node (объект) — Объединенный узел theme.json для блока или вариации.

$metadata (объект) — Обязательный. Метаданные связанного блока, содержащие селекторы.

$node (объект) — Обязательный. Объединенный узел theme.json для блока или вариации.

Метод get_feature_declarations_for_node() возвращает массив стилевых объявлений для особенностей узла с пользовательскими селекторами.

<code>$metadata</code> = (object) array(
    'selectors' => array(
        '.my-block' => array(
            'color' => 'red',
            'font-size' => '16px',
        ),
    ),
);
<code>$node</code> = (object) array(
    'features' => array(
        'color' => 'blue',
        'font-size' => '14px',
    ),
);
<code>$declarations</code> = WP_Theme_JSON::get_feature_declarations_for_node( <code>$metadata</code>, <code>$node</code> );

В данном примере создается объект $metadata, содержащий пользовательские селекторы для блока. Затем создается объект $node, содержащий особенности блока. Метод get_feature_declarations_for_node() вызывается с этими параметрами, и результат сохраняется в переменной $declarations.

get_from_editor_settings()

Метод get_from_editor_settings() класса WP_Theme_JSON преобразует переданные настройки редактора в формате add_theme_support в формат theme.json. Он используется для преобразования конфигурации редактора в соответствии с схемой theme.json.

WP_Theme_JSON::get_from_editor_settings( array $settings ): array

Метод get_from_editor_settings() принимает один обязательный параметр $settings, который представляет собой существующие настройки редактора. Он возвращает конфигурацию, соответствующую схеме theme.json.

$settings (array) — Обязательный. Существующие настройки редактора.

Метод get_from_editor_settings() возвращает массив, представляющий конфигурацию, соответствующую схеме theme.json.


/**
 * Пример использования метода get_from_editor_settings()
 */
// Переданные настройки редактора
$editor_settings = array(
    'colors' => array(
        'text' => '#000000',
        'background' => '#ffffff',
    ),
    'fontSizes' => array(
        'small' => 12,
        'medium' => 16,
        'large' => 20,
    ),
);
// Получение конфигурации в формате theme.json
$theme_json_config = WP_Theme_JSON::get_from_editor_settings( $editor_settings );
// Вывод конфигурации
var_dump( $theme_json_config );

В данном примере мы передаем настройки редактора в метод get_from_editor_settings() и получаем конфигурацию в формате theme.json. Затем мы выводим полученную конфигурацию с помощью функции var_dump().

get_layout_styles()

Метод get_layout_styles() класса WP_Theme_JSON используется для получения CSS-правил макета для определенного блока из определений макета в файле theme.json. Он обрабатывает структуры, которые соответствуют спецификации theme.json.

Метод получает макетные стили для блока из определений макета в файле theme.json. Он возвращает строку, содержащую CSS-правила макета для блока.

WP_Theme_JSON::get_layout_styles( array $block_metadata ): string

Метод get_layout_styles() принимает один параметр:

  • $block_metadata (обязательный): Массив с метаданными о блоке, для которого нужно получить стили.

$block_metadata (array) — Обязательный. Метаданные о блоке, для которого нужно получить стили.

Метод get_layout_styles() возвращает строку, содержащую CSS-правила макета для блока.

<?php
// Массив с метаданными о блоке
$block_metadata = array(
  'name' => 'my_block',
  'version' => '1.0',
  // Другие метаданные о блоке
);
// Получение CSS-правил макета для блока
$layout_styles = WP_Theme_JSON::get_layout_styles( $block_metadata );
// Вывод CSS-правил макета
echo $layout_styles;
?>

get_merged_preset_by_slug()

Метод get_merged_preset_by_slug() является частью класса WP_Theme_JSON и предназначен для обработки структур, соответствующих спецификации theme.json. Он принимает массив пресетов, сгруппированных по источнику и ключу значения пресета, и возвращает массив, где каждый ключ является слагом пресета, а значение — его значением.

WP_Theme_JSON::get_merged_preset_by_slug( array $preset_per_origin, string $value_key ): array

Метод get_merged_preset_by_slug() принимает два обязательных параметра:

  • $preset_per_origin (array) — Массив пресетов, сгруппированных по источнику.
  • $value_key (string) — Свойство пресета, содержащее его значение.

Метод get_merged_preset_by_slug() возвращает массив пресетов, где каждый ключ является слагом пресета, а значение — его значением.

<?php
// Массив пресетов
$preset_per_origin = array(
    'origin1' => array(
        'preset1' => array(
            'value' => 'preset1_value'
        ),
        'preset2' => array(
            'value' => 'preset2_value'
        )
    ),
    'origin2' => array(
        'preset3' => array(
            'value' => 'preset3_value'
        ),
        'preset4' => array(
            'value' => 'preset4_value'
        )
    )
);
// Ключ свойства пресета
$value_key = 'value';
// Получение массива пресетов по слагу
$presets = WP_Theme_JSON::get_merged_preset_by_slug( $preset_per_origin, $value_key );
// Вывод результата
var_dump( $presets );
?>

В данном примере мы имеем массив пресетов, сгруппированных по источнику и ключу значения пресета. Мы передаем этот массив и ключ свойства пресета в метод get_merged_preset_by_slug(). Метод обрабатывает массив и возвращает новый массив, где каждый ключ является слагом пресета, а значение — его значением. Результат выводится с помощью функции var_dump().

get_metadata_boolean()

Метод get_metadata_boolean() является частью класса WP_Theme_JSON и предназначен для получения значения метаданных, которые могут быть либо логическими значениями (булевыми), либо путями к логическим значениям. Метод позволяет извлекать значение метаданных из указанного массива данных.

WP_Theme_JSON::get_metadata_boolean( array $data, bool|array $path, bool $default_value = false ): bool

Метод get_metadata_boolean() принимает следующие параметры:

  • $data (обязательный) — данные, которые необходимо проанализировать.
  • $path (обязательный) — булево значение или путь к булевому значению.
  • $default_value (необязательный) — значение по умолчанию, если указанный путь отсутствует. По умолчанию: false.

$data (array) — Обязательный. Данные, которые необходимо проанализировать.

$path (bool|array) — Обязательный. Булево значение или путь к булевому значению.

$default_value (bool) — Необязательный. Значение по умолчанию, если указанный путь отсутствует. По умолчанию: false.

Метод get_metadata_boolean() возвращает значение булевых метаданных.

<code>$data = array(
    'key1' => true,
    'key2' => array(
        'subkey1' => false,
        'subkey2' => true
    )
);
$path = array('key2', 'subkey2');
$result = WP_Theme_JSON::get_metadata_boolean($data, $path, false);
// Результат: true</code>

get_name_from_defaults()

Метод get_name_from_defaults() класса WP_Theme_JSON используется для получения имени предустановки по заданному слагу. Он работает путем проверки предустановок по умолчанию в файле theme.json и возвращения имени предустановки, если слаг совпадает с одним из них.

WP_Theme_JSON::get_name_from_defaults( string $slug, array $base_path ): string|null

Метод get_name_from_defaults() принимает два параметра:

  • $slug (обязательный) — слаг, для которого мы хотим найти совпадение с предустановкой по умолчанию.
  • $base_path (обязательный) — путь для проверки. По умолчанию это ‘settings’.

$slug (string) — Обязательный. Слаг, для которого мы хотим найти совпадение с предустановкой по умолчанию.

$base_path (array) — Обязательный. Путь для проверки. По умолчанию это ‘settings’.

Метод get_name_from_defaults() возвращает строку (string) с именем предустановки, если совпадение найдено, или null, если совпадение не найдено.

<?php
$slug = 'my_preset';
$base_path = 'settings';
$name = WP_Theme_JSON::get_name_from_defaults( $slug, $base_path );
if ( $name ) {
    echo 'Найдено совпадение с предустановкой: ' . $name;
} else {
    echo 'Совпадение с предустановкой не найдено.';
}
?>

В этом примере мы передаем слаг 'my_preset' и путь 'settings' в метод get_name_from_defaults(). Затем мы проверяем, найдено ли совпадение с предустановкой по умолчанию, и выводим соответствующее сообщение.

get_patterns()

Метод get_patterns() является частью класса WP_Theme_JSON и используется для получения списка шаблонов (по слагам), которые должны быть зарегистрированы из Pattern Directory (каталога шаблонов) текущей темы.

Метод работает следующим образом:

  1. Получает текущую тему WordPress.
  2. Проверяет, есть ли у темы файл theme.json.
  3. Если файл theme.json существует, то он парсится и получается объект, соответствующий структуре файла.
  4. Из объекта структуры файла theme.json извлекается список шаблонов (по слагам), которые должны быть зарегистрированы.
  5. Список шаблонов возвращается в виде массива строк (слагов).
WP_Theme_JSON::get_patterns(): string[]

Метод get_patterns() вызывается статически, без создания экземпляра класса WP_Theme_JSON. Он не принимает никаких аргументов.

Пример использования:

$patterns = WP_Theme_JSON::get_patterns();

В данном примере переменной $patterns будет присвоен массив строк (слагов) шаблонов, которые должны быть зарегистрированы из Pattern Directory текущей темы.

Метод get_patterns() возвращает массив строк (слагов) шаблонов, которые должны быть зарегистрированы из Pattern Directory текущей темы.

Тип возвращаемого значения: string[].

get_preset_classes()

Метод get_preset_classes() класса WP_Theme_JSON создает новые наборы правил в виде классов для каждого предустановленного значения, таких как:

  • background-color
  • color
  • font-family
  • font-size
  • font-weight
  • line-height
  • text-align

Этот метод используется для обработки структур, которые соответствуют спецификации theme.json.

WP_Theme_JSON::get_preset_classes( array $setting_nodes, string[] $origins ): string

Метод get_preset_classes() принимает два обязательных параметра:

  • $setting_nodes — узлы с настройками, необходимые для создания наборов правил.
  • $origins — список источников, из которых нужно обрабатывать предустановленные значения.
  • $setting_nodes (array) — Узлы с настройками. Обязательный параметр.
  • $origins (string[]) — Список источников, из которых нужно обрабатывать предустановленные значения. Обязательный параметр.

Метод get_preset_classes() возвращает новую таблицу стилей в виде строки.

<?php
$setting_nodes = array(
    'background-color' => array(
        'value' => '#ffffff',
        'selectors' => array(
            'body',
            '.site-header'
        )
    ),
    'color' => array(
        'value' => '#000000',
        'selectors' => array(
            'body',
            '.site-header'
        )
    ),
    'font-family' => array(
        'value' => 'Arial, sans-serif',
        'selectors' => array(
            'body',
            '.site-header'
        )
    )
);
$origins = array( 'theme', 'parent-theme' );
$stylesheet = WP_Theme_JSON::get_preset_classes( $setting_nodes, $origins );
echo $stylesheet;
?>

В приведенном выше примере создается новая таблица стилей на основе предустановленных значений, заданных в $setting_nodes. Источники для обработки предустановленных значений указываются в $origins. Результат выводится с помощью echo.

get_property_value()

Метод get_property_value() класса WP_Theme_JSON возвращает значение свойства стиля для указанного пути.

WP_Theme_JSON::get_property_value( array $styles, array $path, array $theme_json = null ): string|array

Метод get_property_value() принимает три параметра:

  • $styles (обязательный) — поддерево стилей.
  • $path (обязательный) — путь к свойству, которое нужно обработать.
  • $theme_json (необязательный) — массив темы JSON. По умолчанию: null.

$styles (array) — Обязательный. Поддерево стилей.

$path (array) — Обязательный. Какое свойство обработать.

$theme_json (array) — Необязательный. Массив темы JSON. По умолчанию: null.

Метод get_property_value() возвращает значение свойства стиля в виде строки или массива.

<?php
$styles = array(
    'color' => 'red',
    'font-size' => '16px',
);
$path = array( 'color' );
$theme_json = array(
    'color' => 'blue',
    'font-size' => '14px',
);
$value = WP_Theme_JSON::get_property_value( $styles, $path, $theme_json );
// Выведет 'blue'
echo $value;
?>

get_raw_data()

Метод get_raw_data() класса WP_Theme_JSON возвращает необработанные данные, которые соответствуют спецификации theme.json. Он используется для получения данных из файла theme.json темы WordPress.

WP_Theme_JSON::get_raw_data(): array

Метод get_raw_data() вызывается статически, без создания экземпляра класса WP_Theme_JSON. Он возвращает массив, содержащий необработанные данные из файла theme.json.

Метод get_raw_data() возвращает массив с необработанными данными из файла theme.json. Эти данные представляют собой необработанные структуры, которые соответствуют спецификации theme.json.

get_root_layout_rules()

Метод get_root_layout_rules() является частью класса WP_Theme_JSON и предназначен для обработки структур, соответствующих спецификации theme.json. Он выводит CSS-правила для расположения элементов на корневом уровне.

WP_Theme_JSON::get_root_layout_rules( string $selector, array $block_metadata ): string

Метод get_root_layout_rules() принимает два обязательных параметра: $selector (строка) — селектор корневого узла, и $block_metadata (массив) — метаданные для корневого блока.

$selector (строка) — Обязательный параметр. Селектор корневого узла.

$block_metadata (массив) — Обязательный параметр. Метаданные для корневого блока.

Метод get_root_layout_rules() возвращает строку с дополнительными CSS-правилами для корневого узла.

<code><?php
// Пример использования метода get_root_layout_rules()
$selector = '.site-container'; // Селектор корневого узла
$block_metadata = array(
    'align' => 'center',
    'size' => 'full',
    'spacing' => array(
        'top' => '20px',
        'bottom' => '20px',
        'left' => '10px',
        'right' => '10px',
    ),
); // Метаданные для корневого блока
$root_layout_rules = WP_Theme_JSON::get_root_layout_rules( $selector, $block_metadata );
echo $root_layout_rules;
?>

В данном примере мы используем метод get_root_layout_rules() для получения дополнительных CSS-правил для корневого узла с селектором .site-container и заданными метаданными для корневого блока. Результат выводится с помощью функции echo.

get_settings()

Метод get_settings() класса WP_Theme_JSON возвращает существующие настройки для каждого блока. Он используется для получения настроек блоков, которые определены в файле theme.json темы.

WP_Theme_JSON::get_settings(): array

Метод get_settings() возвращает массив настроек для каждого блока.

Пример использования:

$theme_json = new WP_Theme_JSON();
$settings = $theme_json->get_settings();

В этом примере создается новый экземпляр класса WP_Theme_JSON и вызывается метод get_settings() для получения настроек блоков.

Метод get_settings() возвращает массив настроек для каждого блока. Каждый элемент массива содержит настройки для конкретного блока.

get_settings_slugs()

Метод get_settings_slugs() класса WP_Theme_JSON возвращает массив с названиями настроек (slug) из заданных настроек темы.

WP_Theme_JSON::get_settings_slugs( array $settings, array $preset_metadata, string[] $origins = null ): array

Метод get_settings_slugs() принимает три параметра:

  • $settings (обязательный) — массив с настройками, которые нужно обработать.
  • $preset_metadata (обязательный) — одно из значений PRESETS_METADATA.
  • $origins (необязательный) — список источников для обработки. По умолчанию: null.
  • $settings (array) — Обязательный. Настройки, которые нужно обработать.
  • $preset_metadata (array) — Обязательный. Одно из значений PRESETS_METADATA.
  • $origins (string[]) — Необязательный. Список источников для обработки. По умолчанию: null.

Метод get_settings_slugs() возвращает массив настроек, где ключ и значение являются названием настройки (slug).

<code>// Пример использования метода get_settings_slugs()
$settings = array(
    'color' => '#ffffff',
    'font-size' => '16px',
    'background-image' => 'url("image.jpg")'
);
$preset_metadata = array(
    'color' => array(
        'default' => '#000000',
        'type' => 'color',
        'label' => 'Text Color'
    ),
    'font-size' => array(
        'default' => '14px',
        'type' => 'text',
        'label' => 'Font Size'
    ),
    'background-image' => array(
        'default' => '',
        'type' => 'image',
        'label' => 'Background Image'
    )
);
$slugs = WP_Theme_JSON::get_settings_slugs($settings, $preset_metadata);
// Результат: $slugs = array('color', 'font-size', 'background-image');

get_settings_values_by_slug()

Метод get_settings_values_by_slug() класса WP_Theme_JSON используется для получения значений предустановленных настроек, сгруппированных по их идентификаторам (slug). Он обрабатывает настройки и метаданные, соответствующие спецификации theme.json.

WP_Theme_JSON::get_settings_values_by_slug( array $settings, array $preset_metadata, string[] $origins ): array

Метод get_settings_values_by_slug() принимает три параметра:

  • $settings (обязательный) — настройки, которые необходимо обработать;
  • $preset_metadata (обязательный) — одно из значений PRESETS_METADATA;
  • $origins (обязательный) — список источников для обработки.

Метод возвращает массив предустановленных значений, где каждый ключ является идентификатором (slug), а каждое значение — предустановленным значением.


/**
 * Получает значения предустановленных настроек по идентификаторам (slug).
 *
 * @param array $settings          Настройки, которые необходимо обработать.
 * @param array $preset_metadata   Одно из значений PRESETS_METADATA.
 * @param string[] $origins        Список источников для обработки.
 *
 * @return array                   Массив предустановленных значений, где каждый ключ является идентификатором (slug), а каждое значение - предустановленным значением.
 */
public static function get_settings_values_by_slug( array $settings, array $preset_metadata, string[] $origins ): array {
    // Логика обработки настроек и метаданных
    // ...
    return $presets;
}

get_setting_nodes()

Метод get_setting_nodes() класса WP_Theme_JSON используется для построения метаданных узлов настроек. Он принимает дерево настроек в формате theme.json и возвращает массив метаданных узлов настроек.

WP_Theme_JSON::get_setting_nodes( array $theme_json, array $selectors = array() ): array

Метод get_setting_nodes() принимает два параметра: $theme_json (обязательный) и $selectors (необязательный). Параметр $theme_json представляет собой дерево настроек, из которого нужно извлечь узлы настроек. Параметр $selectors представляет собой список селекторов для каждого блока. По умолчанию он равен пустому массиву.

  • $theme_json (array) — Обязательный. Дерево настроек, из которого нужно извлечь узлы настроек.
  • $selectors (array) — Необязательный. Список селекторов для каждого блока. По умолчанию: array().

Метод get_setting_nodes() возвращает массив метаданных узлов настроек.

<?php
/**
 * Пример использования метода get_setting_nodes()
 *
 * @param array $theme_json Дерево настроек.
 * @param array $selectors Список селекторов.
 * @return array Массив метаданных узлов настроек.
 */
$theme_json = array(
    // Дерево настроек
);
$selectors = array(
    // Список селекторов
);
$setting_nodes = WP_Theme_JSON::get_setting_nodes( $theme_json, $selectors );
?>

get_stylesheet()

Метод get_stylesheet() возвращает таблицу стилей, полученную в результате обработки структуры theme.json, представленной данным объектом. Он используется для получения таблицы стилей, которая содержит все стили, определенные в файле theme.json.

WP_Theme_JSON::get_stylesheet( string[] $types = array('variables', 'styles', 'presets'), string[] $origins = null, array $options = array() ): string

Метод get_stylesheet() принимает следующие параметры:

  • $types (string[]) — Опционально. Типы стилей для загрузки. По умолчанию загружаются все типы. Допустимые значения: ‘variables’ (только пользовательские CSS-переменные для пресетов и пользовательских), ‘styles’ (только раздел стилей в theme.json), ‘presets’ (только классы для пресетов). По умолчанию: array('variables', 'styles', 'presets').
  • $origins (string[]) — Опционально. Список источников для включения. По умолчанию включаются все допустимые источники. По умолчанию: null.
  • $options (array) — Опционально. Массив опций, используемых внутренне. В настоящее время поддерживается только опция ‘scope’, которая гарантирует, что все стили применяются к заданному селектору, и ‘root_selector’, который перезаписывает и принудительно задает селектор для корневого узла. По умолчанию: array().

Метод get_stylesheet() возвращает строку, содержащую полученную таблицу стилей.

<?php
// Получение таблицы стилей с заданными параметрами
$stylesheet = WP_Theme_JSON::get_stylesheet(
  array('variables', 'styles', 'presets'), // Загрузить все типы стилей
  null, // Включить все допустимые источники
  array() // Внутренние опции (пустой массив)
);
// Вывод результата
echo $stylesheet;
?>

get_styles_block_nodes()

Метод get_styles_block_nodes() является публичным вспомогательным методом класса WP_Theme_JSON. Он используется для получения блочных узлов из файла theme.json.

Метод принимает на вход путь к файлу theme.json и возвращает массив блочных узлов, которые содержатся в этом файле.

WP_Theme_JSON::get_styles_block_nodes(): array

Метод get_styles_block_nodes() не принимает никаких аргументов, он вызывается статически через класс WP_Theme_JSON.

Пример использования:

 $block_nodes = WP_Theme_JSON::get_styles_block_nodes();

В этом примере метод get_styles_block_nodes() вызывается без аргументов и возвращает массив блочных узлов из файла theme.json.

Метод get_styles_block_nodes() возвращает массив блочных узлов, которые содержатся в файле theme.json.

get_styles_for_block()

Метод get_styles_for_block() класса WP_Theme_JSON используется для получения CSS правил для определенного блока из файла theme.json. Он обрабатывает структуры, которые соответствуют спецификации theme.json.

WP_Theme_JSON::get_styles_for_block( array $block_metadata ): string

Метод get_styles_for_block() принимает один обязательный параметр $block_metadata — метаданные о блоке, для которого нужно получить стили. Метод возвращает строку — стили для блока.

$block_metadata (array) — Обязательный. Метаданные о блоке, для которого нужно получить стили.

Метод get_styles_for_block() возвращает строку — стили для блока.

<?php
// Метаданные о блоке
$block_metadata = array(
    'name' => 'my-block',
    'version' => '1.0.0',
    'styles' => array(
        'editor' => 'path/to/editor-styles.css',
        'frontend' => 'path/to/frontend-styles.css',
    ),
);
// Получение стилей для блока
$styles = WP_Theme_JSON::get_styles_for_block( $block_metadata );
// Вывод стилей
echo $styles;
?>

В данном примере мы создаем массив $block_metadata с метаданными о блоке, включая пути к файлам стилей для редактора и фронтенда. Затем мы вызываем метод get_styles_for_block() с этими метаданными и сохраняем результат в переменную $styles. Наконец, мы выводим полученные стили с помощью echo.

get_style_nodes()

Метод get_style_nodes() класса WP_Theme_JSON используется для построения метаданных для узлов стилей в соответствии со спецификацией theme.json.

WP_Theme_JSON::get_style_nodes( array $theme_json, array $selectors = array() ): array

Метод get_style_nodes() принимает два параметра:

  • $theme_json (обязательный) — дерево, из которого нужно извлечь узлы стилей.
  • $selectors (необязательный) — список селекторов для каждого блока. По умолчанию: array().

$theme_json (array) — Обязательный. Дерево, из которого нужно извлечь узлы стилей.

$selectors (array) — Необязательный. Список селекторов для каждого блока. По умолчанию: array().

Метод get_style_nodes() возвращает массив метаданных узлов стилей.

<?php
// Построение метаданных для узлов стилей
$theme_json = array(
  // ... дерево theme.json ...
);
$selectors = array(
  // ... список селекторов ...
);
$style_nodes = WP_Theme_JSON::get_style_nodes( $theme_json, $selectors );
// Использование метаданных узлов стилей
foreach ( $style_nodes as $node ) {
  // ... обработка узла стиля ...
}
?>

get_svg_filters()

Метод get_svg_filters() является частью класса WP_Theme_JSON и предназначен для преобразования всех предустановленных фильтров (duotone) в формат SVG.

Данный метод используется для обработки структур, соответствующих спецификации theme.json, и преобразует все фильтры в формат SVG.

WP_Theme_JSON::get_svg_filters( array $origins ): string

Метод get_svg_filters() принимает один обязательный параметр:

  • $origins (array) — Список источников для обработки.

$origins (array) — Обязательный параметр. Список источников для обработки.

Метод get_svg_filters() возвращает строку, содержащую SVG фильтры.

<?php
// Пример использования метода get_svg_filters()
$origins = array(
    'filter1',
    'filter2',
    'filter3'
);
$svg_filters = WP_Theme_JSON::get_svg_filters( $origins );
echo $svg_filters;
?>

В данном примере мы создаем массив $origins, содержащий источники для обработки. Затем мы вызываем метод get_svg_filters() класса WP_Theme_JSON и передаем ему этот массив в качестве аргумента. Результатом работы метода будет строка, содержащая SVG фильтры, которую мы выводим с помощью функции echo.

get_template_parts()

Метод get_template_parts() является частью класса WP_Theme_JSON, который инкапсулирует обработку структур, соответствующих спецификации theme.json. Он предназначен для получения данных о частях шаблона активной темы.

Метод get_template_parts() возвращает массив данных о частях шаблона активной темы.

WP_Theme_JSON::get_template_parts(): array

Метод get_template_parts() вызывается статически, без создания экземпляра класса WP_Theme_JSON. Он возвращает массив данных о частях шаблона активной темы.

Пример использования:

 $template_parts = WP_Theme_JSON::get_template_parts();

В данном примере переменной $template_parts будет присвоен массив данных о частях шаблона активной темы.

Метод get_template_parts() возвращает массив данных о частях шаблона активной темы.

has_properties()

Метод has_properties() проверяет, содержит ли метаданные ключ с именем «properties».

WP_Theme_JSON::has_properties( array $metadata ): bool

Метод has_properties() принимает один обязательный параметр $metadata — описание свойства стиля. Возвращает булево значение — true, если свойство существует, и false в противном случае.

$metadata (array) (обязательный): Описание свойства стиля.

Метод has_properties() возвращает булево значение. true, если свойство существует, и false в противном случае.

<?php
/**
 * Проверяет, содержит ли метаданные ключ с именем "properties".
 *
 * @param array $metadata Описание свойства стиля.
 * @return bool Возвращает true, если свойство существует, и false в противном случае.
 */
$has_properties = WP_Theme_JSON::has_properties( $metadata );
?>

is_safe_css_declaration()

Метод is_safe_css_declaration() класса WP_Theme_JSON проверяет, является ли предоставленное пользователем объявление безопасным.

Метод используется для проверки безопасности объявлений CSS, которые могут быть предоставлены пользователем в файле theme.json.

WP_Theme_JSON::is_safe_css_declaration( string $property_name, string $property_value ): bool

Метод is_safe_css_declaration() принимает два обязательных параметра:

  • $property_name — имя свойства в объявлении CSS, например, «color» в «color: red».
  • $property_value — значение свойства в объявлении CSS, например, «red» в «color: red».

Метод возвращает логическое значение (bool), которое указывает, является ли объявление безопасным.

$property_name (string) — Обязательный. Имя свойства в объявлении CSS, например, «color» в «color: red».

$property_value (string) — Обязательный. Значение свойства в объявлении CSS, например, «red» в «color: red».

Метод is_safe_css_declaration() возвращает логическое значение (bool), которое указывает, является ли объявление безопасным.

<?php
// Проверка безопасности объявления CSS
$is_safe = WP_Theme_JSON::is_safe_css_declaration( 'color', 'red' );
if ( $is_safe ) {
  echo 'Объявление CSS безопасно.';
} else {
  echo 'Объявление CSS небезопасно.';
}
?>

maybe_opt_in_into_settings()

Метод maybe_opt_in_into_settings() класса WP_Theme_JSON используется для включения некоторых дополнительных настроек, если тема объявила поддержку.

Этот метод обрабатывает структуры, которые соответствуют спецификации theme.json и вносит изменения в переданную структуру.

WP_Theme_JSON::maybe_opt_in_into_settings( array $theme_json ): array

Метод maybe_opt_in_into_settings() принимает один обязательный параметр:

  • $theme_json (array) — Структура theme.json, которую нужно изменить.

Метод возвращает измененную структуру theme.json в виде массива.


/**
 * Пример использования метода maybe_opt_in_into_settings()
 */
// Создаем экземпляр класса WP_Theme_JSON
$theme_json = new WP_Theme_JSON();
// Задаем структуру theme.json
$theme_json_structure = array(
  // ...
);
// Используем метод maybe_opt_in_into_settings()
$modified_theme_json = $theme_json->maybe_opt_in_into_settings( $theme_json_structure );
// Выводим измененную структуру theme.json
var_dump( $modified_theme_json );

В приведенном примере мы создаем экземпляр класса WP_Theme_JSON и задаем структуру theme.json. Затем мы вызываем метод maybe_opt_in_into_settings() и передаем ему структуру theme.json. Результатом работы метода будет измененная структура theme.json, которую мы выводим с помощью функции var_dump().

merge()

Метод merge() класса WP_Theme_JSON используется для объединения новых входящих данных с существующими данными. Он выполняет слияние двух объектов WP_Theme_JSON, где новые данные перезаписывают существующие данные.

WP_Theme_JSON::merge( WP_Theme_JSON $incoming )

Метод merge() принимает один обязательный параметр $incoming, который является объектом WP_Theme_JSON и содержит данные, которые необходимо объединить с текущими данными.

$incoming (обязательный): Объект WP_Theme_JSON с данными, которые необходимо объединить.


/**
 * Пример использования метода merge()
 */
// Создание объекта WP_Theme_JSON
$theme_json = new WP_Theme_JSON();
// Создание объекта WP_Theme_JSON с новыми данными
$incoming_data = new WP_Theme_JSON();
// Выполнение слияния данных
$theme_json->merge( $incoming_data );

В приведенном примере создается объект $theme_json класса WP_Theme_JSON. Затем создается объект $incoming_data такого же класса с новыми данными. Метод merge() вызывается на объекте $theme_json с параметром $incoming_data, чтобы объединить новые данные с текущими данными объекта $theme_json.

prepend_to_selector()

Метод prepend_to_selector() класса WP_Theme_JSON предназначен для добавления подселектора к существующему селектору.

Метод работает путем добавления указанного подселектора в начало существующего селектора. Он используется для модификации селекторов, определенных в файле theme.json в теме WordPress.

WP_Theme_JSON::prepend_to_selector( string $selector, string $to_prepend ): string

Метод prepend_to_selector() принимает два обязательных параметра: $selector (исходный селектор) и $to_prepend (подселектор, который нужно добавить).

$selector (строка, обязательный): Исходный селектор, к которому нужно добавить подселектор.

$to_prepend (строка, обязательный): Подселектор, который нужно добавить.

Метод prepend_to_selector() возвращает новый селектор в виде строки.


/**
 * Пример использования метода prepend_to_selector()
 *
 * Добавляет подселектор ".sub-selector" к существующему селектору ".main-selector".
 * Возвращает новый селектор в виде строки.
 */
$selector = WP_Theme_JSON::prepend_to_selector( '.main-selector', '.sub-selector' );

process_blocks_custom_css()

Метод process_blocks_custom_css() класса WP_Theme_JSON предназначен для обработки CSS-кода с целью применения вложенности.

Метод принимает на вход два обязательных параметра: $css — строка с CSS-кодом, который необходимо обработать, и $selector — строка с селектором, для которого нужно применить вложенность.

После обработки метод возвращает обработанный CSS-код в виде строки.

WP_Theme_JSON::process_blocks_custom_css( string $css, string $selector ): string

Пример использования:

<code>use WP_Theme_JSON;</code>
<code>$css = '...';</code>
<code>$selector = '...';</code>
<code>$processed_css = WP_Theme_JSON::process_blocks_custom_css( $css, $selector );</code>

В данном примере мы использовали метод process_blocks_custom_css() класса WP_Theme_JSON для обработки CSS-кода $css с применением вложенности для селектора $selector. Результат обработки сохраняем в переменную $processed_css.

$css (string) — Обязательный. CSS-код, который необходимо обработать.

$selector (string) — Обязательный. Селектор, для которого нужно применить вложенность.

Метод process_blocks_custom_css() возвращает обработанный CSS-код в виде строки.

<code>use WP_Theme_JSON;</code>
<code>$css = '...';</code>
<code>$selector = '...';</code>
<code>$processed_css = WP_Theme_JSON::process_blocks_custom_css( $css, $selector );</code>

В данном примере мы использовали метод process_blocks_custom_css() класса WP_Theme_JSON для обработки CSS-кода $css с применением вложенности для селектора $selector. Результат обработки сохраняем в переменную $processed_css.

remove_indirect_properties()

Метод remove_indirect_properties() класса WP_Theme_JSON удаляет косвенные свойства из указанного узла и устанавливает их в указанный выходной узел. Он используется для обработки структур, соответствующих спецификации theme.json.

Метод работает следующим образом: он принимает входной узел и выходной узел по ссылке. Затем он проходит по всем свойствам входного узла и проверяет, является ли свойство косвенным. Если свойство косвенное, оно удаляется из входного узла и устанавливается в выходной узел.

WP_Theme_JSON::remove_indirect_properties( array $input, array $output )
  • $input (array) — Обязательный. Узел для обработки.
  • $output (array) — Обязательный. Обработанный узел. Передается по ссылке.

/**
 * Пример использования метода remove_indirect_properties()
 *
 * @param array $input  Узел для обработки.
 * @param array $output Обработанный узел. Передается по ссылке.
 */
WP_Theme_JSON::remove_indirect_properties( $input, &$output );

remove_insecure_properties()

Метод remove_insecure_properties() класса WP_Theme_JSON удаляет небезопасные данные из структуры theme.json. Он используется для санитизации структуры и удаления нежелательных или опасных свойств.

WP_Theme_JSON::remove_insecure_properties( array $theme_json ): array

Метод remove_insecure_properties() принимает один параметр:

  • $theme_json (обязательный): Структура, которую необходимо санитизировать.

Метод remove_insecure_properties() возвращает санитизированную структуру в виде массива.


/**
 * Пример использования метода remove_insecure_properties()
 */
// Задаем структуру theme.json
$theme_json = array(
  "name" => "My Theme",
  "version" => "1.0",
  "author" => "John Doe",
  "insecure_property" => "This is an insecure property"
);
// Санитизируем структуру
$sanitized_theme_json = WP_Theme_JSON::remove_insecure_properties( $theme_json );
// Выводим санитизированную структуру
var_dump( $sanitized_theme_json );

В данном примере мы создаем структуру theme.json с некоторыми свойствами, включая небезопасное свойство insecure_property. Затем мы вызываем метод remove_insecure_properties() и передаем ему эту структуру. Метод удаляет небезопасное свойство и возвращает санитизированную структуру в виде массива. Мы выводим санитизированную структуру с помощью var_dump().

remove_insecure_settings()

Метод remove_insecure_settings() класса WP_Theme_JSON обрабатывает узел настроек и возвращает тот же самый узел без небезопасных настроек. Он используется для удаления настроек, которые могут представлять угрозу безопасности.

WP_Theme_JSON::remove_insecure_settings( array $input ): array

Метод remove_insecure_settings() принимает один обязательный параметр $input, который представляет собой узел, который нужно обработать. Метод возвращает обработанный узел в виде массива.

$input (array) — Обязательный. Узел, который нужно обработать.

Метод remove_insecure_settings() возвращает обработанный узел в виде массива.


/**
 * Пример использования метода remove_insecure_settings()
 */
$input = array(
    'setting1' => 'value1',
    'setting2' => 'value2',
    'insecure_setting' => 'value3',
);
$result = WP_Theme_JSON::remove_insecure_settings( $input );
// Результат:
// $result = array(
//     'setting1' => 'value1',
//     'setting2' => 'value2',
// );

В приведенном выше примере метод remove_insecure_settings() принимает узел $input, который содержит несколько настроек. Метод обрабатывает узел и возвращает его без небезопасной настройки 'insecure_setting'. Результат сохраняется в переменной $result.

remove_insecure_styles()

Метод remove_insecure_styles() класса WP_Theme_JSON обрабатывает узел стиля и возвращает тот же узел без небезопасных стилей. Он используется для обработки структур, соответствующих спецификации theme.json.

WP_Theme_JSON::remove_insecure_styles( array $input ): array

Метод remove_insecure_styles() принимает входной параметр $input в виде массива и возвращает массив.

$input (array) (обязательный): Узел, который нужно обработать.

Метод remove_insecure_styles() возвращает массив.

<?php
/**
 * Пример использования метода remove_insecure_styles()
 *
 * @param array $input Узел, который нужно обработать.
 * @return array Обработанный узел.
 */
$input = array(
    'style' => 'background-color: red; font-size: 20px;',
    'script' => 'alert("Hello, World!");',
);
$result = WP_Theme_JSON::remove_insecure_styles( $input );
?>

remove_keys_not_in_schema()

Метод remove_keys_not_in_schema() класса WP_Theme_JSON используется для удаления ключей, которые отсутствуют в схеме, из заданного дерева.

Данный метод работает следующим образом: для заданного дерева удаляются все ключи, которые не присутствуют в схеме. Это позволяет обеспечить соответствие дерева заданной схеме.

WP_Theme_JSON::remove_keys_not_in_schema( array $tree, array $schema ): array

Метод remove_keys_not_in_schema() принимает два обязательных параметра:

  • $tree (array) — Входные данные для обработки.
  • $schema (array) — Схема, к которой нужно придерживаться.

Метод возвращает измененное дерево $tree в виде массива.


/**
 * Пример использования метода remove_keys_not_in_schema()
 *
 * @param array $tree   Входные данные для обработки.
 * @param array $schema Схема, к которой нужно придерживаться.
 *
 * @return array Измененное дерево $tree.
 */
$tree = WP_Theme_JSON::remove_keys_not_in_schema( $tree, $schema );

replace_slug_in_string()

Метод replace_slug_in_string() класса WP_Theme_JSON преобразует слаг в CSS-свойство пользовательского стиля.

WP_Theme_JSON::replace_slug_in_string( string $input, string $slug ): string

Метод replace_slug_in_string() принимает два обязательных параметра: $input (строка для замены) и $slug (значение слага, используемое для создания пользовательского свойства).

$input (string) — Обязательный. Строка для замены.

$slug (string) — Обязательный. Значение слага, используемое для создания пользовательского свойства.

Метод replace_slug_in_string() возвращает CSS-свойство пользовательского стиля. Например, --wp--preset--color--black.

<?php
    // Пример использования метода replace_slug_in_string()
    $input = 'background-color: {{color.black}};';
    $slug = 'color-black';
    $custom_property = WP_Theme_JSON::replace_slug_in_string( $input, $slug );
    // Результат: $custom_property = 'background-color: var(--wp--preset--color--black);';
?>

resolve_custom_css_format()

Метод resolve_custom_css_format() класса WP_Theme_JSON преобразует внутреннее представление переменных в представление CSS для заданного дерева.

Данный метод используется для конвертации внутреннего представления переменных в формате, соответствующему CSS, для дальнейшего использования в теме WordPress.

WP_Theme_JSON::resolve_custom_css_format( array $tree ): array

Метод resolve_custom_css_format() принимает один обязательный параметр:

  • $tree (array) — Входные данные для обработки.

Метод resolve_custom_css_format() возвращает измененное дерево $tree в формате массива.

<code>// Пример использования метода resolve_custom_css_format()</code>
<code>$tree = array(
    'color' => array(
        'primary' => 'red',
        'secondary' => 'blue'
    ),
    'font-size' => '16px'
);
$result = WP_Theme_JSON::resolve_custom_css_format( $tree );
// Результат:
// $result = array(
//     'color' => array(
//         'primary' => 'color: red;',
//         'secondary' => 'color: blue;'
//     ),
//     'font-size' => 'font-size: 16px;'
// );</code>

resolve_variables()

Метод resolve_variables() класса WP_Theme_JSON используется для разрешения значений CSS переменных в заданных стилях. Он принимает объект WP_Theme_JSON в качестве параметра и возвращает тот же объект с разрешенными переменными.

WP_Theme_JSON::resolve_variables( WP_Theme_JSON $theme_json ): WP_Theme_JSON

Метод resolve_variables() вызывается статически, используя имя класса WP_Theme_JSON. Он принимает объект $theme_json класса WP_Theme_JSON в качестве обязательного параметра. Метод возвращает тот же объект $theme_json с разрешенными переменными.

$theme_json (обязательный): Объект класса WP_Theme_JSON, содержащий данные JSON темы.

Метод resolve_variables() возвращает объект $theme_json с разрешенными переменными.

<code>$theme_json = new WP_Theme_JSON();
$theme_json->set_styles( $styles ); // Установка стилей в объект $theme_json
$theme_json = WP_Theme_JSON::resolve_variables( $theme_json ); // Разрешение переменных в стилях
// $theme_json теперь содержит разрешенные переменные в стилях

sanitize()

Метод sanitize() класса WP_Theme_JSON предназначен для санитизации входных данных в соответствии со схемами.

WP_Theme_JSON::sanitize( array $input, array $valid_block_names, array $valid_element_names, array $valid_variations ): array

Метод sanitize() принимает четыре обязательных параметра:

  • $input (array) — Структура, которую необходимо санитизировать.
  • $valid_block_names (array) — Список допустимых имен блоков.
  • $valid_element_names (array) — Список допустимых имен элементов.
  • $valid_variations (array) — Список допустимых вариаций для каждого блока.

$input (array) — Обязательный. Структура, которую необходимо санитизировать.

$valid_block_names (array) — Обязательный. Список допустимых имен блоков.

$valid_element_names (array) — Обязательный. Список допустимых имен элементов.

$valid_variations (array) — Обязательный. Список допустимых вариаций для каждого блока.

Метод sanitize() возвращает санитизированный вывод в виде массива.

<code>$input = array(
    // Входные данные для санитизации
);
$valid_block_names = array(
    // Список допустимых имен блоков
);
$valid_element_names = array(
    // Список допустимых имен элементов
);
$valid_variations = array(
    // Список допустимых вариаций для каждого блока
);
$sanitized_output = WP_Theme_JSON::sanitize( $input, $valid_block_names, $valid_element_names, $valid_variations );
// Обработка санитизированного вывода

В приведенном выше примере кода мы создаем массив $input с входными данными для санитизации. Затем мы создаем списки допустимых имен блоков, элементов и вариаций. После этого мы вызываем метод sanitize() класса WP_Theme_JSON с указанными параметрами и сохраняем санитизированный вывод в переменную $sanitized_output. Далее мы можем обрабатывать полученный санитизированный вывод.

scope_selector()

Метод scope_selector() класса WP_Theme_JSON используется для ограничения области видимости селектора с помощью другого селектора. Этот метод работает похожим образом на вложенность SCSS, за исключением оператора &, который не поддерживается.

WP_Theme_JSON::scope_selector( string $scope, string $selector ): string

Метод scope_selector() принимает два обязательных параметра: $scope — селектор, к которому нужно ограничить область видимости, и $selector — исходный селектор. Метод возвращает строку — ограниченный селектор.

$scope (string) — Обязательный. Селектор, к которому нужно ограничить область видимости.

$selector (string) — Обязательный. Исходный селектор.

Метод scope_selector() возвращает строку — ограниченный селектор.

<code>$scoped_selector = WP_Theme_JSON::scope_selector( $scope, $selector );</code>

В данном примере переменная $scoped_selector будет содержать ограниченный селектор, полученный с помощью метода scope_selector().

set_spacing_sizes()

Метод set_spacing_sizes() класса WP_Theme_JSON устанавливает массив spacingSizes на основе значений spacingScale из файла theme.json. Он используется для определения размеров отступов в теме WordPress.

WP_Theme_JSON::set_spacing_sizes(): null|void

Этот метод не возвращает никакого значения (null или void).

Метод set_spacing_sizes() не возвращает никакого значения (null или void).

should_override_preset()

Метод should_override_preset() класса WP_Theme_JSON определяет, должен ли пресет быть переопределен или нет. Этот метод был объявлен устаревшим и рекомендуется использовать метод get_metadata_boolean вместо него.

Метод работает путем проверки данных пресета и возвращения булевого значения, указывающего, следует ли переопределить пресет или нет. Он используется для определения, должны ли пресеты быть заменены настройками из theme.json.

WP_Theme_JSON::should_override_preset( array $theme_json, array $path, bool|array $override ): boolean

Метод should_override_preset() принимает три параметра: $theme_json, $path и $override. Он возвращает булево значение.

  • $theme_json (обязательный): Структура, похожая на theme.json, которую нужно проверить.
  • $path (обязательный): Путь для проверки.
  • $override (обязательный): Данные для вычисления, должен ли пресет быть переопределен.

Метод should_override_preset() возвращает булево значение, указывающее, следует ли переопределить пресет или нет.

<?php
/**
 * Пример использования метода should_override_preset()
 *
 * @param array $theme_json The theme.json like structure to inspect.
 * @param array $path Path to inspect.
 * @param bool|array $override Data to compute whether to override the preset.
 *
 * @return boolean
 */
$should_override = WP_Theme_JSON::should_override_preset( $theme_json, $path, $override );
?>

to_ruleset()

Метод to_ruleset() класса WP_Theme_JSON используется для создания соответствующего набора правил CSS на основе заданного селектора и списка объявлений.

Данный метод принимает два обязательных параметра: селектор ($selector) и список объявлений ($declarations). Он создает CSS-правило, состоящее из селектора и списка объявлений, и возвращает его в виде строки.

WP_Theme_JSON::to_ruleset( string $selector, array $declarations ): string

Метод to_ruleset() принимает два параметра: селектор ($selector) и список объявлений ($declarations). Он возвращает созданное CSS-правило в виде строки.

$selector (string) — Обязательный. CSS-селектор.

$declarations (array) — Обязательный. Список объявлений.

Метод to_ruleset() возвращает созданное CSS-правило в виде строки.

<code>$selector</code> = '.my-class'; // CSS-селектор
<code>$declarations</code> = array(
    'color' => 'red',
    'font-size' => '16px',
); // Список объявлений
<code>$ruleset</code> = WP_Theme_JSON::to_ruleset( <code>$selector</code>, <code>$declarations</code> ); // Создание CSS-правила
echo <code>$ruleset</code>; // Вывод CSS-правила

В данном примере создается CSS-правило с селектором .my-class и списком объявлений, включающим свойства color со значением red и font-size со значением 16px. Метод to_ruleset() создает соответствующее CSS-правило и возвращает его в виде строки. Результат выводится на экран.

update_separator_declarations()

Метод update_separator_declarations() класса WP_Theme_JSON предназначен для обновления массива объявлений, если в файле theme.json есть блок разделителя с определенным стилем фона. Метод добавляет атрибут цвета, чтобы отразить изменения на фронтенде.

WP_Theme_JSON::update_separator_declarations( array $declarations ): array

Метод update_separator_declarations() принимает один обязательный параметр:

  • $declarations (array) — Список объявлений.

$declarations (array) — Обязательный. Список объявлений.

Метод update_separator_declarations() возвращает отфильтрованный массив объявлений.

<?php
// Пример использования метода update_separator_declarations()
$declarations = array(
    array(
        'type' => 'separator',
        'color' => '#ffffff',
        'background' => '#000000',
    ),
    array(
        'type' => 'text',
        'color' => '#333333',
        'background' => '#ffffff',
    ),
);
$updated_declarations = WP_Theme_JSON::update_separator_declarations( $declarations );
// Вывод обновленного массива объявлений
var_dump( $updated_declarations );
?>

__construct()

Метод «__construct()» является конструктором класса «WP_Theme_JSON». Он инициализирует объект класса и устанавливает значения его свойств. Конструктор вызывается автоматически при создании нового объекта класса.

Класс «WP_Theme_JSON» инкапсулирует обработку структур, соответствующих спецификации theme.json.

WP_Theme_JSON::__construct( array $theme_json = array(), string $origin = 'theme' )

Метод «__construct()» принимает два параметра:

  • $theme_json (тип: array, опционально) — Структура, которая соответствует схеме theme.json. По умолчанию: пустой массив.
  • $origin (тип: string, опционально) — Источник данных, представленный данным объектом. Один из вариантов: ‘default’, ‘theme’ или ‘custom’. По умолчанию: ‘theme’.

Конструктор класса «WP_Theme_JSON» инициализирует объект и устанавливает значения его свойств на основе переданных параметров.


/**
 * Пример использования метода "__construct()" класса "WP_Theme_JSON".
 *
 * @param array  $theme_json Структура, соответствующая схеме theme.json.
 * @param string $origin     Источник данных, представленный данным объектом.
 *                           Возможные значения: 'default', 'theme' или 'custom'.
 */
$theme_json = array(
    // Здесь указываются параметры структуры theme.json
);
$origin = 'theme';
$theme = new WP_Theme_JSON( $theme_json, $origin );

В приведенном примере создается новый объект класса «WP_Theme_JSON» с заданными значениями параметров «$theme_json» и «$origin».

Примеры использования

Создание экземпляра класса WP_Theme_JSON


// Создание экземпляра класса WP_Theme_JSON
$theme_json = new WP_Theme_JSON();

Для создания экземпляра класса WP_Theme_JSON используется конструктор «__construct». Этот класс предназначен для обработки структур, соответствующих спецификации theme.json.

Добавление подселектора к существующему


// Добавление подселектора к существующему
$selector = '.my-selector';
$sub_selector = ':hover';
$new_selector = $theme_json->append_to_selector($selector, $sub_selector);

Метод «append_to_selector» принимает два аргумента: существующий селектор и подселектор, и возвращает новый селектор, полученный путем добавления подселектора к существующему селектору.

Вычисление стилей для предустановленных классов


// Вычисление стилей для предустановленных классов
$settings = array(
    'preset' => 'large',
    'spacing' => 'medium',
);
$presets_styles = $theme_json->compute_preset_classes($settings);

Метод «compute_preset_classes» принимает массив настроек и возвращает сгенерированные наборы правил для предустановленных классов на основе этих настроек.

Извлечение CSS-переменных для пользовательских значений


// Извлечение CSS-переменных для пользовательских значений
$block_settings = array(
    'color' => '#ff0000',
    'font-size' => '16px',
);
$declarations = array();
$theme_json->compute_theme_vars($block_settings, $declarations);

Метод «compute_theme_vars» принимает массив настроек блока и массив объявлений, и извлекает CSS-переменные для пользовательских значений, добавляя их в массив объявлений в соответствующем формате.

Вопросы и ответы

Как получить данные из файла theme.json?

Для получения данных из файла theme.json в WordPress используется класс WP_Theme_JSON. Для этого нужно создать экземпляр этого класса с помощью конструктора «__construct».


$theme_json = new WP_Theme_JSON();

После создания экземпляра класса, можно получить данные из файла theme.json с помощью метода «get_data». Этот метод возвращает действительный theme.json, предоставленный темой.


$data = $theme_json->get_data();

Как получить список стилей блока из theme.json?

Для получения списка стилей блока из файла theme.json в WordPress используется метод «get_block_styles». Этот метод преобразует каждую секцию стилей в список правил CSS, содержащих стили блока, которые будут добавлены к таблице стилей.


$block_styles = $theme_json->get_block_styles();

Как получить список классов блока из theme.json?

Для получения списка классов блока из файла theme.json в WordPress используется метод «get_block_classes». Этот метод преобразует каждую секцию стилей в список правил CSS, содержащих стили блока, которые будут добавлены к таблице стилей.


$block_classes = $theme_json->get_block_classes();

Как получить список настроек блока из theme.json?

Для получения списка настроек блока из файла theme.json в WordPress можно использовать метод get_settings() класса WP_Theme_JSON. Этот метод возвращает существующие настройки для каждого блока.


$theme_json = new WP_Theme_JSON();
$settings = $theme_json->get_settings();

Как получить список шаблонов страниц из активной темы?

Для получения списка шаблонов страниц из активной темы в WordPress можно использовать метод get_custom_templates() класса WP_Theme_JSON. Этот метод возвращает данные о шаблонах страниц активной темы.


$theme_json = new WP_Theme_JSON();
$templates = $theme_json->get_custom_templates();

Как получить список паттернов из theme.json?

Для получения списка паттернов из файла theme.json в WordPress можно использовать метод get_patterns() класса WP_Theme_JSON. Этот метод возвращает список желаемых паттернов (слагов), которые должны быть зарегистрированы из каталога паттернов.


$theme_json = new WP_Theme_JSON();
$patterns = $theme_json->get_patterns();

Как получить список CSS-переменных из theme.json?

Для получения списка CSS-переменных из theme.json можно использовать метод get_css_variables. Он преобразует каждую секцию стилей в список правил CSS, которые будут добавлены к таблице стилей. Пример использования:


$theme_json = new WP_Theme_JSON();
$css_variables = $theme_json->get_css_variables();

В результате выполнения этого кода, в переменной $css_variables будет содержаться список CSS-переменных из theme.json.

Как применить CSS-стили из theme.json к стилям блока?

Для применения CSS-стилей из theme.json к стилям блока можно использовать метод get_block_styles. Он преобразует каждую секцию стилей блока в список правил CSS, которые будут добавлены к таблице стилей. Пример использования:


$theme_json = new WP_Theme_JSON();
$block_styles = $theme_json->get_block_styles();

В результате выполнения этого кода, в переменной $block_styles будет содержаться список CSS-стилей из theme.json, примененных к стилям блока.

Как преобразовать внутреннее представление переменных в CSS-представление?

Для преобразования внутреннего представления переменных в CSS-представление можно использовать метод convert_custom_properties. Он преобразует внутреннее представление переменных в формат CSS. Пример использования:


$theme_json = new WP_Theme_JSON();
$custom_properties = $theme_json->convert_custom_properties($internal_variables);

В результате выполнения этого кода, в переменной $custom_properties будет содержаться преобразованное в CSS-представление внутреннее представление переменных.

Класс WP_Theme_JSON предоставляет удобные методы для работы с theme.json в WordPress. Методы get_css_variables и get_block_styles позволяют получить список CSS-переменных и применить CSS-стили из theme.json соответственно. Метод convert_custom_properties позволяет преобразовать внутреннее представление переменных в CSS-представление. Эти методы могут быть полезными при разработке тем и плагинов для WordPress.

Обсуждение