Local JSON

Обзор

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.
?>