Разработка
Исходный код — на GitHub. Перед pull request прочитайте CONTRIBUTING.md.
Окружение
bash
composer install
npm install && npm run build
bin/setup-dev.shsetup-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 МБ HTML | 1 |
Запуск после 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-файлы для скриптов.
После изменения строк:
- Выполните
npm run build && npm run i18n. - Переведите новые строки в
.po. - Снова выполните
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.