Функция Local JSON

Advanced Custom Fields (ACF)

Local JSON - это новая функция, добавленная в версии 5, которая сохраняет настройки групп и полей в виде .json файлов в вашей теме. Идея схожа с кэшированием, и одновременно значительно ускоряет работу ACF и позволяет использовать системы контроля версий для настроек полей!

Начало работы

Чтобы начать использовать функцию Local JSON, просто создайте новую папку acf-json в вашей теме. Эта папка должна иметь права на чтение и запись (в большинстве случаев 755 подойдет).

Когда эта папка существует, каждый раз при сохранении группы полей будет создаваться (или обновляться) JSON-файл с группой полей и настройками полей. JSON-файл будет назван с использованием уникального ключа группы полей.

Теперь, когда JSON-файл существует, ACF будет загружать соответствующую группу полей и настройки полей из этого файла. Это уменьшит количество обращений к базе данных во время загрузки страницы!

Как работает Сохранение

Каждый раз при сохранении группы полей создается (или обновляется) JSON-файл с группой полей и настройками полей. JSON-файл будет назван с использованием уникального ключа группы полей. Существует только 1 точка сохранения (папка), которая может быть настроена путем добавления следующего кода в вашу тему.

add_filter( 'acf/settings/save_json', 'my_acf_json_save_point' );

function my_acf_json_save_point( $path ) {

	// update path
	$path = get_stylesheet_directory() . '/my-custom-folder';

	// return
	return $path;
}

Как работает загрузка

Во время процедуры инициализации ACF будут загружены все файлы .json из папки acf-json. По умолчанию ACF ищет папку в вашей теме под названием acf-json, однако это только одна из точек загрузки.

Чтобы добавить новую точку загрузки (папку) для поиска ACF, добавьте следующий код в вашу тему или плагин.

add_filter( 'acf/settings/load_json', 'my_acf_json_load_point' );

function my_acf_json_load_point( $paths ) {

	// remove original path (optional)
	unset( $paths[0] );

	// append path
	$paths[] = get_stylesheet_directory() . '/my-custom-folder';

	return $paths;
}

This filter will allow plugin and theme developers to easily register field groups which cannot be edited by clients.

Синхронизация изменений

Настоящая сила "локального JSON" - это возможность синхронизации изменений. Это позволяет нескольким разработчикам работать над проектом, использовать git для push / pull файлов и синхронизировать все базы данных с последними настройками групп полей!

Группы полей JSON будут доступны для синхронизации, когда либо группа полей JSON не существует в БД, либо когда группа полей JSON содержит более высокое значение 'modified' (в массиве JSON), чем дата изменения поста в БД.

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

Безопасность

Если вы хотите скрыть группу полей или настройки полей от общественности, просто добавьте пустой файл index.php в папку acf-json. WP использует тот же метод для скрытия папки wp-content/themes.

<?php
// Silence is golden.