Skip to content

Разработка ​

Исходный код — на GitHub. Перед pull request прочитайте CONTRIBUTING.md.

Окружение ​

bash
composer install
npm install && npm run build
bin/setup-dev.sh

setup-dev.sh ставит WordPress на SQLite в .dev/wp — без Docker и MySQL. Скрипт подключает плагин и демо-поля. Логин администратора сохраняется в .dev/credentials.

bash
wp --path=.dev/wp server --port=8889

Тесты и линтеры ​

bash
composer test
composer lint
npm run lint:js

Тесты (PHPUnit) запускаются на настоящем WordPress с отдельной временной базой.

Производительность ​

Замер bin/benchmark.php: 100 полей и повторитель на 1000 строк × 3 подполя, SQLite-эмуляция в dev-окружении. На MySQL запись быстрее.

ОперацияВремяЗапросов
Сохранение новых 1000 строк2,6 с6 003 (1 INSERT на значение)
Повторное сохранение без изменений26 мс1
Изменение 2 значений24 мс5
get_fields() с холодным кешем39 мс1
have_rows() по 1000 строкам с 3 get_sub_field()45 мс1
Вывод метабокса с 1000 строками110 мс, 2,4 МБ HTML1

Запуск после composer test:

bash
WPFF_DB_FILE=wpff-tests.sqlite wp --path=.dev/wp eval-file bin/benchmark.php

Переводы ​

Шаблон — languages/freeform-fields.pot. Русский перевод входит в плагин: freeform-fields-ru_RU.po, .mo и JSON-файлы для скриптов.

После изменения строк:

  1. Выполните npm run build && npm run i18n.
  2. Переведите новые строки в .po.
  3. Снова выполните npm run i18n.

Благодарности ​

  • Редактор карты — Leaflet (BSD-2-Clause). Данные карты © участники OpenStreetMap (ODbL).
  • Перетаскивание в конструкторе — dnd kit (MIT).
  • Спасибо авторам Advanced Custom Fields за соглашения, с которыми совместим этот плагин.

Лицензия ​

GPL-2.0-or-later. © 2026 kiberberik и участники проекта WP Freeform Fields.

GPL-2.0-or-later. Проект не связан с ACF и WP Engine.