Обзор
Local JSON — это новая возможность, которая появилась в версии 5. Она позволяет сохранять настройки полей и групп полей в .json файле внутри вашей темы. Это очень похоже на кэширование. Благодаря использованию этой функции ACF заметно ускоряется и даже появляется система контроля версий для ваших настроек.
Начало работы
Чтобы начать работать с возможностями Local JSON создайте новую папку в вашей теме и назовите ее acf-json. У этой папки должны стоять права на сервере на чтение и запись (для большинства случаев хватит 755).
Если папка создана, то каждый раз когда вы сохраняете настройки будет создаваться или обновляться JSON файл с текущими настройками полей. JSON будет назван согласно уникальному ключу поля.
После создания JSON файла ACF будет загружать актуальную версию настроек из этого файла,что уменьшает количество обращений к БД во время загрузки страницы.
Объяснение сохранения
Каждый раз когда сохраняются настройки полей создается (или обновляется) JSON файл в котором хранятся настройки полей и групп полей. Может существовать только 1 save point (папка) для хранения настроек и ее можно указать с помощью следующего кода.
<?php
add_filter('acf/settings/save_json', 'my_acf_json_save_point');
function my_acf_json_save_point( $path ) {
// указать новый путь до папки
$path = get_stylesheet_directory() . '/my-custom-folder';
// вернуть путь для обработки
return $path;
}
?>
Объяснение загрузки
Во время инициализации ACF, все .json файлы в папке acf-json загружаются. По умолчанию проверяется только папка acf-json, однако можно добавить еще папки.
Чтобы добавить новый load point (папку) для ACF используйте код ниже.
<?php
add_filter('acf/settings/save_json', 'my_acf_json_save_point');
function my_acf_json_save_point( $path ) {
// обновить путь до папки
$path = get_stylesheet_directory() . '/my-custom-folder';
// вернуть путь для обработки
return $path;
}
?>
Синхронизация изменений
Реальная сила Local JSON заключается в возможности синхронизации. Это позволяет нескольким разработчикам работать над проектом, использовать git, и держать все базы данных с актуальными настройками полей!
Группы полей JSON будут доступы для синхронизации, если их еще нет в базе данных или данные являются более новыми.
Когда будет доступна синхронизации, то появится новая вкладка в списке групп полей.
Безопасность
Если вы хотите спрятать ваши настройки от других, то нужно добавить файл index.php в папке acf-json. WordPress использует такой же способ для сокрытия папок и согласно кодексу стоит добавить этот код в index.php.
<?php
// Silence is golden.
?>