Активация ACF PRO через WP-CLI: константа и одна команда

Активация ACF PRO через WP-CLI: константа и одна команда

По документации ACF, лицензию ACF PRO можно активировать двумя способами: ввести ключ на странице обновлений в админке или прописать его константой ACF_PRO_LICENSE в wp-config.php. Без активной лицензии плагин не получает обновления и не даёт пользоваться PRO-возможностями. Когда стенды поднимаются часто, второй способ удобнее: ключ задаётся одной командой WP-CLI, и этот шаг легко вставить в скрипт деплоя.

Константа ACF_PRO_LICENSE в wp-config.php

Константу ACF PRO поддерживает с версии 5.11. Плагин находит её сам, активирует ключ при первом заходе в админку, а если ключ в константе поменялся, отключает старую лицензию и включает новую. Если сайт уже активирован ключом из админки, а потом в wp-config.php прописали другой ключ, сработает то же правило.

define( 'ACF_PRO_LICENSE', 'ваш-ключ' );

Прописать ключ через WP-CLI

Править wp-config.php руками не нужно, для этого есть wp config set. Ключ лучше брать из переменной окружения, чтобы он не остался в истории shell:

wp config set ACF_PRO_LICENSE "$ACF_PRO_KEY" --type=constant --path=/var/www/example/htdocs

Сам ключ при этом оказывается в wp-config.php, поэтому этот файл не должен попадать в git, а права на него стоит ограничить, например 440 или 400.

Активировать сразу, без захода в админку

Константа срабатывает только при загрузке админки. Если сайт нужно активировать прямо в пайплайне, можно вызвать функцию ACF PRO через wp eval. Важная поправка к старым советам: acf_pro_update_license() только записывает ключ в базу и не активирует лицензию на сервере ACF. Активацию делает acf_pro_activate_license(), она отправляет ключ и адрес сайта на сервер ACF и возвращает результат:

wp eval 'var_export( acf_pro_activate_license( getenv( "ACF_PRO_KEY" ), true ) );'

Второй аргумент true отключает вывод уведомлений в админке, функция просто возвращает массив с success и message или WP_Error при ошибке связи. Это внутренние функции плагина, а не публичный API, поэтому после крупных обновлений ACF такой шаг стоит перепроверить.

Скрипт для стенда и CI

#!/bin/bash
set -euo pipefail
: "${ACF_PRO_KEY:?Задайте ACF_PRO_KEY в окружении}"
WP="wp --path=${WP_PATH:-/var/www/example/htdocs}"

$WP plugin activate advanced-custom-fields-pro
$WP config set ACF_PRO_LICENSE "$ACF_PRO_KEY" --type=constant
$WP eval 'var_export( acf_pro_activate_license( getenv( "ACF_PRO_KEY" ), true ) );'
$WP cache flush

Ключ хранится в секретах CI (GitHub Actions, GitLab CI, Ansible Vault), а не в репозитории. Если ACF PRO ставится через Composer, по инструкции ACF ключ служит логином в auth.json, а паролем адрес сайта, и этот файл тоже не коммитят.

Если активация не проходит

  • Активен именно ACF PRO, а не бесплатный ACF.
  • Сервер может ходить наружу по HTTPS к серверу ACF: проверьте файрвол и прокси.
  • Ключ скопирован целиком: в нём нет пробелов, но есть буквы в разных регистрах, цифры и спецсимволы.
  • Лицензия не истекла и не исчерпан лимит сайтов.
  • Команда запущена с правильным --path к WordPress.

Если нужна помощь с ACF, кастомными блоками или админкой под контент, по моему прайс-листу «ACF и кастомные блоки» стоит от 15 000 ₽, а точечные доработки существующего сайта от 5 000 ₽.

В итоге для стендов проще всего прописать ключ константой ACF_PRO_LICENSE через wp config set, а если нужна активация сразу, вызвать acf_pro_activate_license через wp eval. Ключ берётся из переменной окружения или секретов CI и не попадает в git.

Источники и ссылки


Комментарии загружаются…