WordPress · 7 мин чтения

ACF Pro: установка, лицензия и синхронизация полей между сайтами

ACF Pro установка - это не просто загрузка zip-архива через админку WordPress. Если делать это на автомате, как с обычными плагинами, через полгода получаешь путаницу с лицензией на несколько доменов и рассинхрон полей между dev-версией сайта и продакшеном. Я ставил ACF Pro на десятки проектов - от лендингов до крупных каталогов на WooCommerce - и ниже разложу процесс так, как делаю сам: от покупки лицензии до автоматической синхронизации через local JSON.

Зачем ACF Pro, если есть бесплатная версия

Бесплатный Advanced Custom Fields закрывает базовые задачи: текстовые поля, изображения, галереи, простые репитеры через сторонние хаки. Но как только в проекте появляются повторяющиеся блоки контента (например, карточки услуг с произвольным набором полей) или гибкий конструктор страниц, бесплатной версии не хватает.

Возможность ACF Free ACF Pro
Repeater (повторяющиеся группы полей) нет есть
Flexible Content (гибкий конструктор блоков) нет есть
Options Pages (страницы настроек темы) нет есть
Gallery field нет есть
ACF Blocks для Gutenberg ограниченно полноценно
Клонирование полей (Clone field) нет есть

На практике беру Pro-версию сразу, если в проекте больше трёх типов записей с кастомными полями или нужен конструктор блоков для клиента, который сам собирает страницы. Разработку сайта на WordPress с такими требованиями я обычно веду именно на связке ACF Pro + Gutenberg-блоки - это выходит дешевле, чем городить кастомную админку с нуля.

Установка ACF Pro: два рабочих способа

Плагин не лежит в каталоге wordpress.org - качается только с личного кабинета на advancedcustomfields.com после покупки лицензии. Есть два варианта поставить его на сайт.

Способ 1 - вручную через zip

  • Захожу в личный кабинет на сайте ACF, скачиваю zip-архив плагина (там же лежит и лицензионный ключ)
  • В админке WordPress: Плагины → Добавить новый → Загрузить плагин → выбираю скачанный zip
  • Активирую плагин
  • Иду в ACF → Обновления, вставляю лицензионный ключ, жму «Активировать лицензию»

Этот способ нормален для разового сайта, но неудобен, если ведёшь 5-10 проектов на ACF Pro - каждый раз качать архив вручную долго.

Способ 2 - через composer (мой основной)

На проектах с версионированием через git ставлю ACF Pro через composer - это позволяет не коммитить сам плагин в репозиторий и не пересобирать его вручную на сервере.

composer config repositories.acf-pro composer https://connect.advancedcustomfields.com
composer require advanced-custom-fields/advanced-custom-fields-pro

При установке composer попросит ACF_PRO_KEY - это тот же лицензионный ключ из личного кабинета. Прописываю его в .env файле сборки (например, в переменной окружения CI/CD или в auth.json локально), чтобы ключ не светился в публичном репозитории.

composer config --global http-basic.connect.advancedcustomfields.com ВАШ_КЛЮЧ ''

После установки плагин всё равно нужно активировать в админке - composer только доставляет файлы, лицензия привязывается к домену через тот же экран ACF → Обновления.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Лицензия ACF Pro: тарифы и привязка к доменам

ACF продаёт три типа лицензий: Personal (для одного сайта), Freelancer (10 сайтов) и Agency (без ограничения по числу сайтов, включая multisite). Разница именно в количестве доменов, к которым можно привязать активацию, - функционал плагина одинаковый на всех тарифах.

Важный нюанс, на котором сам спотыкался в начале: лицензия привязывается к конкретному домену, включая поддомены dev/staging. Если у клиента сайт живёт на staging.example.com, а потом переезжает на example.com, старую активацию нужно деактивировать в личном кабинете ACF, иначе упрётесь в лимит по количеству сайтов раньше, чем ожидали.

Лицензия покупается на год и даёт доступ к обновлениям плагина и техподдержке разработчиков ACF в течение этого срока. По истечении года без продления плагин продолжает работать на уже активированных сайтах, но новые обновления и техподдержку получать перестаёте - это стоит учитывать, если сайт живёт годами и на нём будут выходить обновления WordPress.

Синхронизация полей между сайтами: экспорт и импорт JSON

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

ACF Pro умеет экспортировать группы полей в PHP-код или JSON-файл:

  • ACF → Инструменты → Экспорт полей
  • Выбираю нужные группы полей (или все сразу)
  • Жму «Экспортировать как JSON» - скачивается файл acf-export.json
  • На целевом сайте: ACF → Инструменты → Импорт полей → загружаю этот файл

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

Автоматическая синхронизация через Local JSON

Это способ, которым пользуюсь на всех проектах, где есть git и минимум два окружения (dev/staging/prod). ACF Pro умеет сам сохранять каждую группу полей в отдельный JSON-файл в папке темы или плагина - и подхватывать изменения из этой папки на любом окружении, куда её скопировали через git.

В functions.php темы (или в кастомном плагине проекта) прописываю путь для сохранения и загрузки JSON:

add_filter('acf/settings/save_json', function() {
    return get_stylesheet_directory() . '/acf-json';
});

add_filter('acf/settings/load_json', function($paths) {
    unset($paths[0]);
    $paths[] = get_stylesheet_directory() . '/acf-json';
    return $paths;
});

После этого при каждом сохранении группы полей в редакторе ACF автоматически пишет .json-файл в папку acf-json. Эту папку коммичу в git вместе с остальным кодом темы. Когда коллега или сервер деплоя подтягивает изменения через git pull, ACF при следующей загрузке страницы админки сам видит, что JSON новее, чем запись в базе, и предлагает синхронизировать - жмёшь «Sync» одной кнопкой на всех изменённых группах разом.

На проектах, где WordPress работает бэкендом для интернет-магазина на WooCommerce с полями под характеристики товаров, этот механизм экономит часы: меняешь структуру полей локально, пушишь коммит - и на проде через одну синхронизацию всё встаёт на место, без риска забыть перенести одно поле из сорока.

Типичные ошибки при установке и синхронизации

  • Забыли деактивировать лицензию на старом домене - при смене хостинга или домена лицензия остаётся привязанной к прежнему адресу, новый сайт показывает «не активировано», хотя ключ тот же
  • Коммитят acf-json, но не проверяют конфликты - если два разработчика одновременно правят одну группу полей на разных ветках, JSON-файлы конфликтуют как обычный код; сливаю такие конфликты вручную по ключам полей, а не автоматическим merge
  • ACF_PRO_KEY утекает в публичный репозиторий - если прописать ключ прямо в composer.json вместо переменной окружения, он попадёт в git-историю; ключ храню только в auth.json (добавленном в .gitignore) или в секретах CI
  • Путают Local JSON с экспортом в PHP - экспорт в PHP-код удобен для разового встраивания группы полей в код плагина, но не синхронизируется автоматически при изменениях, в отличие от Local JSON
  • Не проверяют версию ACF Pro после обновления WordPress - при мажорном обновлении WordPress или PHP старые версии ACF Pro (до 6.0) иногда конфликтуют с новым API блоков Gutenberg

Если ведёте несколько сайтов клиентов с разной структурой полей и хочется не тратить время на разбор чужой конфигурации ACF после чужого разработчика, техподдержку и сопровождение таких проектов беру от 15 000 ₽/мес - это включает и разбор конфликтов синхронизации, если структура полей за годы разрослась и запуталась.

Перенос полей на новый сайт при миграции хостинга

Отдельный кейс - полный перенос сайта на новый хостинг или домен. Здесь синхронизации через git обычно нет (клиент просто просит «перевезти» готовый сайт), поэтому использую комбинацию: экспортирую все группы полей через ACF → Инструменты → Экспорт в JSON-файл, переношу папку acf-json вместе с темой при миграции файлов сайта, а лицензию деактивирую на старом домене и активирую на новом сразу после переноса базы данных - иначе плагин на новом домене будет показывать обновления как недоступные из-за истёкшей активации.

Корпоративный сайт, каталог, блог

Фронтенд + Бэкенд

от 60 000 ₽

Подробнее →

Частые вопросы

Можно ли пользоваться ACF Pro без действующей лицензии?

Плагин продолжает работать на сайте, где уже был активирован, даже после истечения срока лицензии - поля и группы не отключаются. Но без активной лицензии пропадает доступ к обновлениям плагина и официальной техподдержке, а старые версии со временем хуже совместимы с новыми релизами WordPress и PHP.

Чем отличается синхронизация через Local JSON от обычного экспорта в JSON-файл?

Обычный экспорт - это разовое действие: скачал файл, загрузил на другом сайте вручную. Local JSON работает постоянно: ACF сам пишет и читает файлы из папки acf-json при каждом изменении группы полей, а перенос между окружениями происходит через git вместе с остальным кодом темы, без отдельных шагов экспорта-импорта.

Что делать, если после git pull ACF не предлагает синхронизацию полей?

Чаще всего причина в том, что путь в acf/settings/load_json не совпадает с реальной папкой, куда пишутся файлы (например, тема была переименована), или файлы acf-json не попали в коммит из-за .gitignore. Проверяю оба фильтра в functions.php и содержимое папки acf-json в самом git-репозитории.

Можно ли использовать одну лицензию ACF Pro на нескольких сайтах клиента?

Зависит от тарифа: Personal-лицензия рассчитана на один сайт, Freelancer - до 10 сайтов, Agency - без ограничения по числу активаций, включая multisite-установки. Если ведёте портфолио из нескольких клиентских проектов, разумнее сразу брать Freelancer или Agency, чтобы не покупать отдельный ключ под каждый сайт.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно