K2 STUDIO

Продукты под ключ

← Все кейсы

Gravity Forms и GravityKit

Формы на WordPress — это инфраструктура: на них держатся заявки, регистрации и заказы у огромного числа сайтов. Семь лет мы работали внутри этой экосистемы — не над отдельным сайтом, а над слоем, поверх которого строят другие разработчики.

Заказчик
GravityKit (Katz Web Services) и Gravity Forms (Rocketgenius)
Годы
2013 — 2020
Роль
Ведущий бэкенд-разработчик
Стек
PHP и WordPress, React, Svelte

Задача

Gravity Forms — одно из самых распространённых решений для форм на WordPress; его ставят у себя университеты, международные организации и крупные компании. GravityView надстраивается сверху и превращает накопленные заявки в приложение: каталоги, таблицы, карты, поиск и правку записей прямо на сайте.

Работа над таким продуктом отличается от работы над сайтом. Ошибку нельзя откатить на одном сервере: обновление уезжает на все установки сразу. Обратная совместимость — не пожелание, а обязательство перед тысячами чужих сайтов и плагинов.

Что сделали

  • GF_Query — механизм запросов к записям форм, появившийся в Gravity Forms 2.3: объединения, условия и сортировка вместо ручной сборки SQL.
  • Бэкенд GravityView: показ записей на сайте, фильтрация, поиск и редактирование без участия администратора.
  • Совместимость и производительность на чужих установках, которые невозможно проверить заранее.

Результат

Код 2018 года работает до сих пор

GF_Query вошёл в Gravity Forms 2.3 и остаётся в продукте: он отрабатывает на каждом сайте, где стоят эти формы.

Это самый буквальный пример того, о чём весь этот сайт. Мы ушли из проекта в 2020 году, а написанное продолжает выполняться каждый день, без нас.

Почему это про нас

Продуктовая разработка приучает к дисциплине, которой не требует заказная: думать об обновлении, которое нельзя отозвать, и о совместимости с кодом, который писали не вы. Ту же осторожность мы приносим в чужие системы — в Важную Рыбу и Royal Thai, где рядом с работающей учётной системой нужно было достроить новое, ничего не сломав.

Обсудить похожую задачу