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, чтобы не покупать отдельный ключ под каждый сайт.