Перейти к содержимому
Эльдар Шахвалиев
Обсудить проект
← Все проекты
202602.2026 — 03.2026Сданполный цикл

IDG Capital — корпоративный сайт венчурного фонда

Венчурный фонд (международный VC), корпоративный сайт · Венчурный капитал / финансовые услуги

Fullstack WordPress-разработчик (backend-focus), соло

Сайт венчурного фонда был статичным: добавить компанию в портфель или офис на карту мог только разработчик. Сделал всё редактируемым, не тронув вид страницы.

  • PHP
  • WordPress
  • SCF
  • ACF
  • MySQL
  • JavaScript
  • HTML
  • CSS/SCSS
  • Swiper.js
  • Canvas/WebGL
  • nginx
  • PHP-FPM
  • Polylang
  • Rank Math
198
постов контента после мультиязычности (66×3: 18 страниц, 144 portfolio, 36 locations)
47
портфельных компаний создано one-time скриптом миграции
~60
SCF/ACF-полей за 10 фаз кастомизации админки
3
языка EN/CN/KR (Polylang), 33 термина таксономий, 7 нав-меню переведено
12 Critical / 22 Medium / 15 Low + 50+
находок аудита кода + расхождений с вёрсткой (05.03.2026)
72%
production-readiness на старте, 5 критических блокеров (05.02.2026)
130 файлов, +15083/−5690
масштаб адаптации статики под WordPress
  • Собрал около 60 полей в админке за десять заходов: тексты, цифры, изображения, состав портфеля, адреса офисов — всё правится без разработчика.
  • Три языка, включая китайский и корейский: переведены и материалы, и подписи интерфейса, зашитые в код; подключены шрифты для иероглифов.
  • Карта мира строится сама: при сохранении офиса адрес превращается в координаты через внешний сервис, результат хранится три месяца.
  • Стартовый аудит оценивал готовность к запуску в 72% и называл пять критических препятствий — закрыты все пять.
  • Собрал пакет для установки на сервер: конфигурации, скрипты установки и восстановления из копии, проверка работоспособности, документация.

Задача

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

Требовалось три языка, включая китайский и корейский, редактирование всего содержимого силами заказчика и состояние, в котором сайт можно отдать на боевой сервер. Стартовый аудит оценивал готовность к запуску в 72% и называл пять критических препятствий.

Что сделано

  • Перенёс готовую вёрстку в управляемый сайт, не тронув ни её внешний вид, ни структуру классов: разделы страницы стали шаблонами, а их содержимое — полями в админке.
  • Собрал около 60 полей за десять заходов, чтобы редактор мог менять всё: тексты, цифры, изображения, состав портфеля, адреса офисов. Поля описаны кодом, а не мышкой в интерфейсе, — иначе их не перенести на другой сервер и не сравнить между версиями.
  • Перенёс данные скриптами, а не руками: 47 портфельных компаний, юридические страницы, координаты офисов на карте.
  • Сделал три языка — английский, китайский и корейский. Перевода потребовали не только материалы, но и подписи интерфейса, зашитые в код; для иероглифов подключены отдельные шрифты.
  • Провёл аудиты безопасности и соответствия исходной вёрстке и закрыл находки: данные попадали в скрипты страницы без экранирования, у формы не было ограничения частоты отправки и защиты от подделки запроса.
  • Собрал пакет для установки на сервер: конфигурации, скрипты установки, резервного копирования, восстановления и проверки работоспособности, дамп базы и документация.

Итог

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

Стартовый аудит оценивал готовность к запуску в 72% и называл пять критических препятствий — закрыты все пять, вместе с находками аудитов безопасности и соответствия вёрстке. Содержимое сайта — включая состав портфеля, адреса офисов и цифры на главной — редактируется из админки на всех трёх языках.

Технические детали

Решение и подход

Архитектура данных: WP Admin (SCF Options / CPT) → inc/helpers.php → wp_localize_script (idgHero, idgLocations) → vanilla JS с захардкоженным fallback. Это сохранило исходный фронтенд почти без изменений и сделало его управляемым из админки. Нетривиальные места: автогеокодирование офисов через Nominatim API при сохранении Location (тиерный fallback, кэш 90 дней) с конвертацией координат в позиции на SVG-карте; кэш списка офисов в футере (transient 1 час, ключ по локали); защита AJAX-формы (nonce + transient-rate-limit по IP, заявки сохраняются в CPT inquiry с метабоксом и кастомными колонками админки). Сохранены улучшения a11y (aria, focus, Escape) и устойчивость JS (typeof gsap, null-проверки) поверх исходной вёрстки.

Стек и обоснование

WordPress 6.9 + PHP 8.x — CMS-управление контентом для не-технического заказчика. SCF (Secure Custom Fields, форк ACF) — программные поля в коде (версионируемость). Polylang — мультиязычность EN/CN/KR со String Translations. Rank Math — SEO/sitemap/OG. Safe SVG — загрузка SVG-логотипов; Performance Lab — WebP/lazy-load; Post Types/Taxonomy Order — ручная сортировка. Фронтенд намеренно без сборки (vanilla JS, plain CSS/BEM, px, Swiper с CDN, Canvas/WebGL) — сохранение исходной вёрстки. Локальная среда — Local by Flywheel (nginx + PHP-FPM + MySQL).

Инженерные вызовы

  • Паритет статики и WordPress при нулевой сборке: енквью с цепочками зависимостей вместо @import-каскадов, сохранение iframe Canvas-компонентов и инлайн-WebGL без рефактора в модули.
  • Безопасность вывода: данные ACF попадали в JS через innerHTML — устранены XSS (серверное esc_* + .textContent/createElement), добавлен rate-limit на публичный AJAX-endpoint.
  • Мультиязычность: перевод не только постов, но и захардкоженных UI-строк (регистрация в Polylang), привязка меню/таксономий к языкам, типографика CJK (двойное тире —— как норма для CN) — часть пунктов осталась на уточнение дизайнеру.
  • Геокодирование и карта: надёжный тиерный запрос к Nominatim с кэшем и переводом гео-координат в координаты SVG-карты.
  • Воспроизводимый деплой Local→VPS: search-replace доменов, права, health-check, бэкап/restore.
  • разработка
  • миграция
  • аудит
  • мультиязычность (i18n)
  • SEO
  • деплой
  • контент-миграция
  • документация