Где находятся шаблоны блоков
Шаблоны блоков располагаются в теме WordPress в директории:
/wp-content/themes/{theme}/parts/sections/{layout}.php
Например, для блока с layout-ом text:
/wp-content/themes/your-theme/parts/sections/text.php
Имя файла шаблона должно точно соответствовать значению name layout-а в ACF.
Примеры соответствия layout → файл
| Layout (name в ACF) | Файл шаблона |
|---|---|
text |
parts/sections/text.php |
main_banner |
parts/sections/main_banner.php |
faq |
parts/sections/faq.php |
gallery |
parts/sections/gallery.php |
smart_price_list |
parts/sections/smart_price_list.php |
Пример структуры шаблона: текстовый блок (text.php)
Рассмотрим структуру текстового блока как пример организации шаблона:
<?php
// Получаем имя файла без расширения (например: "text")
$currentFileNameWithoutExtension = pathinfo(__FILE__, PATHINFO_FILENAME);
$prefixClass = $currentFileNameWithoutExtension;
// Получаем данные блока из Flexible Content
$section = get_sub_field('own_group');
// Логика выбора данных:
// - Если есть данные блока И не установлен флаг "default" — используем данные блока
// - Иначе — берём дефолтные значения из опций темы
if (empty($section[$prefixClass.'_group']['default']) AND !empty($section)) {
$sectionTemplate = $section[$prefixClass.'_group'];
} else {
$sectionTemplate = get_field($prefixClass.'_group', 'option');
}
// Уникальный ID для JavaScript
$randid = rand();
?>
Что делает этот код
| Строка | Описание |
|---|---|
pathinfo(__FILE__, PATHINFO_FILENAME) |
Получает имя файла без расширения («text» из «text.php») |
get_sub_field('own_group') |
Получает данные текущего блока из Flexible Content |
$section[$prefixClass.'_group'] |
Обращается к группе полей блока (text_group) |
['default'] |
Флаг — если установлен, используются дефолтные значения |
get_field(..., 'option') |
Загружает дефолтные значения из глобальных настроек темы |
$randid = rand() |
Генерирует уникальный ID для привязки JavaScript |
Другие блоки в сборке могут иметь иную структуру в зависимости от их назначения и сложности.
Ключевые особенности структуры
| Элемент | Описание |
|---|---|
get_sub_field('own_group') |
Получает данные текущего блока из Flexible Content |
$prefixClass.'_group' |
Имя группы полей соответствует имени файла (text → text_group) |
['default'] |
Флаг для использования дефолтных значений вместо данных блока |
get_field(..., 'option') |
Дефолтные значения блока из глобальных настроек темы |
$randid |
Уникальный ID для привязки JavaScript к конкретному экземпляру блока |
Структура полей блока в ACF
Каждый layout в «Редакторе блоков» содержит поле типа «Клонировать» (Clone), которое подключает заранее созданную группу полей:
| Параметр | Значение |
|---|---|
| Тип поля | Клонировать (Clone) |
| Название поля | Настройка |
|
Первая строка в секции Render: имеет префикс /wp-content/themes/corp-cinar/ далее нужно указать путь от темы к блоку, например /parts/text.php |
|
| Символьный код | own_group |
| Поля | Выбранная группа полей блока (например: «Текстовой блок (group)») |
| Способ отображения | Группа (сгруппировать выбранные поля в одно и выводить вместо текущего) |
| Макет | Блок |
| Префикс для названий полей | Включён — значения сохраняются как own_group_%field_name% |
Пример настроек блока

Пример настроек блока (обратите внимание на настройку "Способ отображения" и свитчер "Префикс для названия полей")

Схема работы Clone-полей
ACF → Группы полей
├── Редактор блоков (flex_content)
│ └── Layout: text
│ └── own_group (Clone) → клонирует «Текстовой блок»
│
└── Текстовой блок (отдельная группа полей)
└── text_group (Group)
├── default (True/False)
├── title (Text)
├── text (WYSIWYG)
├── no_hide (True/False)
└── ... другие поля
Преимущества подхода с Clone
- Переиспользование — одна группа полей может клонироваться в несколько layout-ов
- Централизованное редактирование — изменения в группе полей применяются ко всем блокам, использующим её
- Дефолтные значения — та же группа полей используется в настройках темы (Options) для хранения дефолтных значений
- Чистая структура — layout содержит только одно Clone-поле вместо дублирования всех sub_fields
Где создаются группы полей для блоков
Группы полей блоков создаются отдельно от «Редактора блоков»:
WordPress Админка → ACF → Группы полей → [Название блока]
Каждая группа должна содержать вложенную группу с именем {layout}_group (например: text_group, banner_group, faq_group).
После создания группы полей она становится доступна для выбора в Clone-поле layout-а.