Группу полей можно создать в панели, но тогда настройки хранятся в базе текущего сайта. На локальной копии, тестовом сервере и рабочем сайте эти базы разные. Если менять группу в одном месте и забыть повторить изменения в другом, шаблон может ждать поле, которого редактор на рабочем сайте не видит.
Local JSON сохраняет определения ACF в файлах проекта. Их можно добавить в Git, переносить вместе с кодом и синхронизировать с базой через панель WordPress. Это переносит структуру полей; значения в опубликованных записях остаются данными самого сайта.
Как работает папка acf-json
По умолчанию ACF сохраняет локальные JSON-файлы в папку acf-json темы. Когда группа полей сохраняется через админку, ACF создаёт или обновляет файл с её определением. При загрузке страницы плагин читает найденные определения и может предложить синхронизировать их с базой.
Для начала создайте в активной теме каталог acf-json и убедитесь, что сервер может записывать в него файлы. Далее сохраните группу «Данные книги» в админке и проверьте, появился ли файл с префиксом group_. Не помещайте в этот каталог пароли или значения заполненных записей: JSON описывает настройки групп, а не секреты проекта.
Сохраняем файлы в собственную папку
Если хотите хранить определения в другом месте темы, укажите путь фильтром acf/settings/save_json. Например, чтобы складывать их в acf/field-groups дочерней темы:
<?php
add_filter( 'acf/settings/save_json', 'codelab_acf_save_json_path' );
function codelab_acf_save_json_path( $path ) {
return get_stylesheet_directory() . '/acf/field-groups';
}
Создайте эту папку и разрешите веб-серверу записывать в неё, если вы собираетесь сохранять группы из панели. Если код должен только загружать JSON из дополнительной папки, добавьте путь через фильтр acf/settings/load_json:
<?php
add_filter( 'acf/settings/load_json', 'codelab_acf_add_json_load_path' );
function codelab_acf_add_json_load_path( $paths ) {
$paths[] = get_stylesheet_directory() . '/acf/field-groups';
return $paths;
}
Для стандартной папки темы эти фильтры не нужны. Пример с отдельным путём полезен, когда нужно чётко отделить группы полей от остальных файлов темы. Учитывайте, что get_stylesheet_directory() указывает на активную дочернюю тему; для родительской темы путь будет другим.
Переносим изменения между сайтами
- Создайте или измените группу полей на локальном сайте.
- Проверьте, что соответствующий JSON-файл обновился, и добавьте его в Git.
- Перенесите изменение на тестовый или рабочий сайт обычным процессом развёртывания.
- В ACF откройте группы полей и вкладку синхронизации, если сайт показывает ожидающее изменение.
- Сверьте название и дату группы, затем синхронизируйте нужную запись.
Синхронизация обновляет определение группы в базе сайта. Перед ней проверьте, какое определение новее и где были сделаны последние правки. Если кто-то менял эту же группу в админке рабочего сайта, сравните изменения, прежде чем заменять одно другим.
Local JSON или регистрация в PHP
| Подход | Когда удобен | Кто меняет поля |
|---|---|---|
| Панель WordPress | Небольшой сайт или прототип. | Администратор и редактор. |
| Local JSON | Нужно переносить группы между средами с помощью файлов. | Команда работает через панель и Git. |
| PHP-регистрация | Определения должны быть частью кода плагина или темы. | Разработчик. |
Не создавайте одну и ту же группу одновременно в базе, JSON и PHP: у команды появится несколько источников правды. Выберите один способ, договоритесь, кто меняет поля, и переносите определения согласованно.
0
11