Начало работы
WP Freeform Fields — бесплатный плагин произвольных полей для WordPress с открытым кодом. Создан по мотивам ACF PRO и совместим с его данными. Добавляет группы полей, повторители, гибкое содержимое, страницы настроек и блоки на PHP-шаблонах. Всё бесплатно под лицензией GPL, «Pro»-версии нет.
Значения хранятся в том же формате, что у Advanced Custom Fields, а функции для шаблонов те же (get_field(), have_rows()…). Поэтому сайт на ACF можно перевести без конвертации данных и правки темы.
Требования
- WordPress 6.5+ и PHP 8.1+.
- Для превью Block Bindings в редакторе — WordPress 6.7+.
- Для Abilities API — WordPress 6.9+.
Установка
- Скачайте
freeform-fields-x.y.z.zipиз последнего релиза. - В WordPress откройте Плагины → Добавить новый → Загрузить плагин, выберите архив и активируйте.
- Откройте Custom Fields → Add New и создайте первую группу полей.
Переходите с ACF? Сначала прочитайте Переход с ACF.
Обновления
С версии 1.3.0 новые версии появляются на экранах «Плагины» и «Обновления» и ставятся как любое другое обновление. При обычной проверке обновлений WordPress (дважды в день) плагин читает небольшой update.json из последнего релиза на GitHub; данные сайта не отправляются.
Обновление с 1.2.2 и старше
Старые версии обновляться сами не умеют. Один раз установите 1.3.0, загрузив zip поверх старой версии (WordPress предложит заменить её), дальше версии будут приходить как обновления.
Отключить проверку:
add_filter( 'wpff/updates/enabled', '__return_false' );Первая группа полей
Группы можно собрать в админке или зарегистрировать из кода. В коде используйте действие wpff/init:
add_action( 'wpff/init', function () {
wpff_add_local_field_group( array(
'key' => 'group_book',
'title' => 'Книга',
'fields' => array(
array( 'key' => 'field_book_isbn', 'name' => 'isbn', 'label' => 'ISBN', 'type' => 'text', 'required' => 1 ),
array( 'key' => 'field_book_cover', 'name' => 'cover', 'label' => 'Обложка', 'type' => 'image', 'return_format' => 'url' ),
array( 'key' => 'field_book_shop', 'name' => 'shop', 'label' => 'Магазин', 'type' => 'google_map' ),
),
'location' => array( array( array( 'param' => 'post_type', 'operator' => '==', 'value' => 'post' ) ) ),
) );
} );Вывод значений
// В шаблоне:
echo esc_html( get_field( 'isbn' ) );
printf( '<img src="%s" alt="">', esc_url( get_field( 'cover' ) ) );
$shop = get_field( 'shop' ); // array( 'address' => …, 'lat' => …, 'lng' => …, 'zoom' => … )У каждой функции есть и имя с префиксом wpff_ (wpff_get_field()…), оно доступно всегда. Подробнее — в разделе Функции и значения.
Другие примеры — в папке examples/ репозитория.
Что дальше
- Возможности — всё, что умеет плагин.
- Блоки — блоки на PHP-шаблонах, InnerBlocks и Block Bindings.
- Хуки — как менять загрузку, сохранение и проверку значений.
- Отличия от ACF — прочитайте перед переводом рабочего сайта.