Advanced Custom Fields (ACF) — один из самых популярных плагинов для расширения возможностей редактирования контента в WordPress. Часто при работе с несколькими сайтами возникает необходимость синхронизировать именно поля ACF, чтобы сохранить идентичную структуру и избежать ручного повторного создания.
Проблемы синхронизации полей ACF между сайтами
ACF хранит настройки полей в базе данных, а именно в таблице wp_posts с типом записи acf-field-group и acf-field. Из-за этого стандартные методы экспорта/импорта не всегда удобны и безопасны, особенно если у вас несколько сайтов с разной базой контента.
Кроме того, плагины для миграции контента или базы данных часто не затрагивают поля ACF корректно, что ведет к рассинхронизации и ошибкам в отображении метаданных.
Решение — автоматизировать экспорт и импорт полей ACF с помощью кода и специальных плагинов для синхронизации, что позволит ускорить процесс и минимизировать человеческие ошибки.
Экспорт и импорт JSON файлов ACF
ACF поддерживает нативный экспорт и импорт групп полей через JSON. В админке ACF можно настроить локальную папку для сохранения файлов с полями, которые автоматически синхронизируются при развертывании сайта.
Чтобы включить эту функцию, добавьте в functions.php вашей темы следующий код:
function wpsync_acf_json_save_point( $path ) {
// Путь к папке в вашей теме для хранения JSON
$path = get_stylesheet_directory() . '/acf-json';
return $path;
}
add_filter('acf/settings/save_json', 'wpsync_acf_json_save_point');
function wpsync_acf_json_load_point( $paths ) {
// Удаляем стандартные пути, добавляем наш
unset($paths[0]);
$paths[] = get_stylesheet_directory() . '/acf-json';
return $paths;
}
add_filter('acf/settings/load_json', 'wpsync_acf_json_load_point');Теперь при сохранении полей ACF они будут сохраняться в виде JSON файлов в папке acf-json вашей темы, а при загрузке сайта WordPress будет автоматически подгружать эти файлы. Это позволяет просто синхронизировать поля между сайтами, копируя папку acf-json.
Автоматизация через WP-CLI для массовой синхронизации
Если вы работаете с множеством сайтов, удобным решением станет автоматизация экспорта и импорта полей ACF с помощью WP-CLI — командной строки для управления WordPress.
Для экспорта полей можно использовать команду:
wp acf export --post_id=group_123456 --path=/var/www/site1Для импорта аналогично:
wp acf import --path=/var/www/site2 /path/to/exported-json-file.jsonЭто позволяет организовать регулярный обмен полями в рамках CI/CD процессов, облегчая работу команды разработчиков.
Пример кастомного скрипта для синхронизации полей ACF
Можно написать PHP-скрипт, который будет экспортировать все группы полей ACF в JSON и отправлять их на другой сайт по API. Ниже упрощённый пример функции для этого (функция с префиксом wpsync_ для уникальности):
function wpsync_export_acf_field_groups() {
$groups = acf_get_field_groups();
$exported = [];
foreach ($groups as $group) {
$fields = acf_get_fields($group['key']);
$exported[] = [
'group' => $group,
'fields' => $fields
];
}
return json_encode($exported, JSON_PRETTY_PRINT);
}Затем этот JSON можно отправить на другой сайт и там с помощью функции импорта восстановить группы и поля. Такой подход позволяет кастомизировать синхронизацию под свои нужды.
Плагины для удобной синхронизации ACF между сайтами
Есть несколько инструментов, которые облегчают задачу:
- WP Sync DB — позволяет синхронизировать базу данных между сайтами, включая ACF, с возможностью фильтрации таблиц и данных.
- ACF to REST API — расширяет REST API WordPress, чтобы вернуть данные полей ACF, что полезно для интеграции и миграции.
- WP Migrate DB Pro — популярный плагин для миграции баз данных с поддержкой сериализованных данных, отлично подходит для проектов с ACF.
Использование этих инструментов ускоряет перенос и синхронизацию полей, особенно при регулярных обновлениях.
Интеграция с WPShop для удобного контроля
Если вы используете темы и плагины из WPShop, например темы Reboot или Root, можно дополнительно настроить автоматическую синхронизацию JSON файлов ACF при обновлении темы или плагина, чтобы сохранить все поля в актуальном состоянии.
Кроме того, плагин Clearfy Pro от WPShop поможет оптимизировать работу сайта и избежать конфликтов при синхронизации, отключая ненужные функции.
Рекомендации по безопасности и тестированию
При синхронизации полей ACF между сайтами важно тестировать все изменения на стенде и использовать резервное копирование. Особенно если вы используете автоматические скрипты или плагины, чтобы избежать потери данных.
Ограничивайте доступ к JSON файлам и API, используйте nonce и права доступа WordPress для защиты от несанкционированного импорта.
Также рекомендуем проверять версии ACF на всех сайтах, чтобы избежать несовместимости форматов.
Итоговые советы по эффективной синхронизации ACF
- Используйте встроенный JSON-экспорт ACF с папкой
acf-jsonв вашей теме. - Автоматизируйте процессы через WP-CLI или собственные скрипты.
- Подключайте специализированные плагины для миграции базы данных.
- Обязательно тестируйте и делайте бэкапы.
- Используйте инструменты из WPShop для улучшения производительности и безопасности.