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

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

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

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

  • 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

Контекст и задача

IDG Capital — корпоративный сайт венчурной фирмы с двухслойной архитектурой. Исходник — статический single-page сайт (html/: чистый HTML5, BEM-CSS без препроцессоров, vanilla JS без бандлера, 8 секций, Swiper.js, Canvas/WebGL-анимации, кастомная SVG-карта мира; git-репо karagulow/IDG-Capital, 102 коммита). Задача — превратить эту вёрстку в полноценный управляемый из админки WordPress-сайт: контент через SCF Options Pages и Custom Post Types, мультиязычность EN/CN/KR, SEO, корректная безопасность и готовый к продакшену деплой. На старте production-аудит оценивал готовность темы в 72% с пятью критическими блокерами (docs/production-audit-report.md).

Что я сделал

Честно о роли (engagement: mixed — миграция + greenfield-тема + аудит + i18n + devops):

  • Миграция вёрстки → WordPress. С нуля собрал кастомную тему idg-capital (без page-builder): functions.php грузит 11 include-ов (theme-setup, security, enqueue, helpers, post-types, taxonomies, scf-fields, geocoding, menu-filters, i18n, contact-form), template-parts 1:1 повторяют секции статики. Масштаб адаптации: 130 файлов, +15083/−5690 строк (ADAPTATION-PLAN.md).
  • Редактируемость из админки. ~60 SCF/ACF-полей за 10 фаз (8 field-групп в inc/scf-fields.php); 3 CPT — portfolio (публичный), location (admin-only), inquiry (заявки формы, без wp_mail) — и таксономии sector/region.
  • Контент-миграция. One-time WP-CLI скрипты: 47 портфельных компаний (migrate-portfolio-companies.php), legal-страницы, координаты карты.
  • Мультиязычность EN/CN/KR. Polylang: переводы для всех 198 постов, регистрация UI-строк через pll_register_string() (inc/i18n.php), CJK-шрифты Noto Sans/Serif SC/KR, верифицированный аудит переводов.
  • Аудиты и исправления. Security/production/SCF/multilang-аудиты; пофикшены XSS (экранирование wp_localize_script-данных), rate-limit AJAX-формы, nonce, WP-hardening (AUDIT-REPORT.md, git-коммит 2891362).
  • Деплой-пакет. Полный архив под VPS: nginx/php-fpm/wp-config шаблоны, скрипты deploy/backup/restore/health-check/search-replace-urls, дамп БД (~198 постов), документация (README/DEPLOYMENT/MAINTENANCE/ARCHITECTURE/CHANGELOG).

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

Архитектура данных: 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-проверки) поверх исходной вёрстки.

Результат

Подтверждено артефактами: деплой-архив от 19.03.2026 с актуальной сборкой (тема v1.2.8, WP 6.9.4, 8 плагинов), 198 постов контента в трёх языках (66×3), 47 импортированных компаний, ~60 SCF-полей. Аудиты зафиксировали и закрыли находки безопасности/вёрстки (12 Critical / 22 Medium / 15 Low + 50+ расхождений). Production-готовность поднята с исходных 72%. Боевой запуск на домене idgcapital.com артефактами не подтверждён (есть деплой-таргет в deploy.sh и тестовый сервер).

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

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).

Роль ИИ в проекте

Образцовый AI-augmented, doc-driven процесс (полностью прослеживается по артефактам):

  • Оркестраторы: Claude Code (CLAUDE.md, .claude/) и OpenCode (.opencode/oh-my-opencode.json — кастомные агенты sisyphus/prometheus/oracle/metis/hephaestus/atlas и др. на Claude Opus 4.6 / Sonnet 4.6); AGENTS.md (формат Codex/agents) в корне и в теме.
  • MCP-серверы: Novamira (WordPress MCP — чтение/запись постов, ACF, CPT, Polylang на тестовом сервере) и Playwright (скриншоты, проверка DOM EN/CN/KR на брейкпоинтах). Конфиг .mcp.json.
  • Кастомные субагенты: wp-reviewer (Sonnet — ревью PHP/CSS/JS по чеклисту), html-wp-comparator (Haiku — диф статики и template-parts).
  • Слэш-команды (skills): /wp-debug, /wp-cli, /sync-check, /validate-scf (fork-агент Explore).
  • Хуки: check-debug-log.sh (PostToolUse — авто-проверка debug.log), check-escaping.sh (PreToolUse — контроль esc_*). Правила: .claude/rules/{wordpress-php,css-conventions,security}.md. Плагины: php-lsp (Intelephense), claude-wordpress-skills.
  • Цикл research→plan→audit→verify→implement: отдельным промптом проведено веб-исследование оптимального workflow (claude-code-workflow-prompt.mdworkflow-research.md, ~92 КБ), затем gated-настройка через AskUserQuestion (workflow-setup.md); аудиты перепроверялись кросс-инструментально (Playwright + Novamira + Figma) в multilang-audit-verified.md; промпты архивировались (PROMPT-ARCHIVE-2026-03-19.md, prompts/).

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

  • Паритет статики и 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
  • деплой
  • контент-миграция
  • документация