«Строй-Прораб 24/7» — доработка и аудит сайта (WordPress + Elementor)
Строительная компания (пристройки/надстройки, кровля), Москва/МО · Строительство / лидогенерация (B2C/B2B)
- PHP
- WordPress
- Elementor
- Elementor Pro
- Hello Elementor
- JavaScript
- CSS/SCSS
- MySQL
- WP-CLI
- Swiper
- Yoast SEO
- Schema.org JSON-LD
- SMTP/PHPMailer
- Telegram API
- Яндекс.Метрика
- 13
- 5
- 53
- 57/100
- ~30
- 74
- 27→102→24
- v0.1.44
Контекст и задача
Заказчик — строительная компания «Строй-Прораб 24/7» (Москва/МО, ниши «пристройки и надстройки» и «кровельные работы»), сайт строй-прораб.рф (punycode xn----8sbd3aycgeebdm.xn--p1ai). Стек: WordPress 7.0, тема Hello Elementor 3.4.4 (child-темы нет), Elementor + Elementor Pro 3.32.0, Yoast SEO; хостинг Sprinthost (shared, без отдельного staging). Сайт уже существовал и работал на лидогенерацию (формы/попап → email + Telegram).
Пришёл заказ на доработку по скринкаст-ТЗ из 12+1 пунктов (источник — docs/tasks/tasks.md): хлебные крошки, перенос телефона/мессенджеров в нижнюю шапку, карусель в Hero, дифференциация табов «Фото наших работ», многошаговый квиз, блок акции, перенос отзывов, FAQ-аккордеон, иконка мессенджера MAX, попап-замер через 60 секунд. Ключевое ограничение, заданное заказчиком, — максимум автономии: все правки выполнять программно по SSH, без ручного визуального редактора Elementor (это вынесено в анти-паттерны проекта в AGENTS.md). Позже добавились поток ad-hoc доработок и отдельный заказ на глубокий аудит сайта с продающим предложением.
Что я сделал
Честно о характере работы — это доработка legacy + аудит + эксплуатация прода (mixed), не greenfield:
- Анализ и планирование (фазы A–E): разбор сайта по SSH (read-only), интерактивное согласование ТЗ с заказчиком, исследование практик 2026, выбор подхода, детальный план реализации. Артефакты —
site-analysis.md,elementor-map.md,tz-clarifications.md,best-practices-2026.md,approach.md,implementation-plan.md. - Реализация 13 пунктов ТЗ через собственный мини-плагин
stroyprorab-customizations+ точечные идемпотентные патчи_elementor_data/настроек по WP-CLI. Все пункты доведены до прода и визуально подтверждены заказчиком. - Поток ad-hoc доработок (Д1–Д5): кастомное off-canvas мобильное меню (перехват чужого виджета Unlimited Elements), плавающая кнопка мессенджеров (FAB), замена плитки на MAX в мобильном баре, квизы с карточками-вариантами и фото, модалка «Расчёт стоимости онлайн» (мультиэкземплярный квиз). Затем — новый видеоотзыв, обязательное поле «Населённый пункт» во всех формах, перевод почты на корпоративный SMTP.
- Глубокий аудит (26.06.2026): технический + правовой (152-ФЗ) + SEO/перформанс/безопасность/инфраструктура, с доказательствами командами на сервере. Две поставки: рабочий технический реестр находок и красивый HTML-отчёт для заказчика.
Решение и подход
Архитектура «код + патчи» (выбор зафиксирован в approach.md):
- Мини-плагин как единый дом для кастома — переживает обновления темы, версионируется, обратим деактивацией; child-тему и ACF сознательно не вводил (не нужны для задач). Синглтон
\SP\Pluginвручную подключает процедурные файлы хуков (PSR-4 не используется). - Пер-страничный гейтинг целевых услуг #171/#173: целевой ID резолвится рано (хук
wp) из$GLOBALS['wp_the_query'], а не черезget_queried_object_id(), который врёт во время рендера Elementor. Это решило протечку контента между услугами (усугублялась общим single-шаблоном #148 и Element Cache — последний пришлось отключить с safeguardpre_option). - Блоки как шорткоды/рендер-хуки, а не ручная вёрстка: квиз, FAQ (с JSON-LD FAQPage), акция, отзывы, Hero-карусель внедряются фильтрами
elementor/widget/render_contentиelementor/frontend/the_content; переиспользован Swiper, зарегистрированный Elementor. - Безопасный цикл правок прода без staging: снимок
_elementor_data→ идемпотентный патч (wp eval-file) → валидация JSON →wp elementor flush-css --regenerate→ проверкаcurl(вкл. мобильный UA) и адаптив → готовый байт-точный откат. Учтены особенности окружения: OPcacherevalidate_freq=60(ждать после деплоя), специфичность CSS против kit/reset (<button>требует ≥(0,2,0)+!important). - Лиды: общая
sp_save_lead()→ приватный CPTsp_lead(журнал в админке) + email + Telegram с ретраями на сетевые сбои; затем аутентифицированный SMTPinfo@домендля доставляемости (SPF/DKIM/DMARC).
Методология аудита (промпт 04-audit-glubokij-opus.md, max effort): фазы 0 (инвентаризация) → 1 (проверка по 8 доменам) → 2 (кросс-анализ) → 3 (синтез). Каждая находка — по схеме «что не так → чем грозит (₽/штраф/взлом/потеря лидов) → что сделать → эффект → усилия/приоритет», с доказательством командой с сервера и разделением «факт ✅ / гипотеза ❓». Контентная и Elementor-составляющие покрыты отдельно: карта узлов/палитры/форматов _elementor_data (elementor-map.md), 7×H1 на главной, отсутствие LocalBusiness-схемы, тяжёлые видео в uploads. Итог приоритизирован матрицей Влияние×Усилия (🔴 Горит / 🟠 Рост / 🟢 Стратегия / ⚡ Быстрые победы).
Результат
- 13/13 пунктов ТЗ реализованы автономно и подтверждены заказчиком; 5 ad-hoc доработок (Д1–Д5) закрыты, плюс последующие (видеоотзыв, поле «город», SMTP). Источник:
tz-clarifications.md,02-prodolzhenie.md, git log. - Сайт живой (HTTP 200 на момент проверки 2026-06-29).
- Аудит: выведенный индекс здоровья 57/100, ~30 приоритизированных находок; зафиксированы и сильные стороны (рабочая доставка лидов, ежедневные автобэкапы, качественный кастом-код с nonce+honeypot+экранированием, отечественный стек без Google-сервисов). Поставки — технический реестр
2026-06-26-audit-tech.mdи HTML-отчёт2026-06-26-otchet-zakazchik.html. - Эффект в бизнес-метриках (рост лидов/конверсии) — не зафиксировано (уточнить): цели Яндекс.Метрики сняты заказчиком,
SP_YM_IDпуст.
Стек и обоснование
WordPress + Elementor/Elementor Pro (наследие сайта; не обновлял 3.32→4.x — он forward-совместим, обновления не навязываются, риск регрессий на проде высок). PHP-мини-плагин — портативнее functions.php и устойчив к обновлениям темы. WP-CLI — основной автономный канал правок. Swiper — переиспользован из Elementor (без лишних зависимостей). Schema.org JSON-LD (FAQPage/BreadcrumbList) — для SEO-сниппетов. SMTP/PHPMailer + DKIM/DMARC — доставляемость писем. Telegram API с ретраями — устойчивость уведомлений. Отечественный стек (Яндекс.Метрика/Карты) без Google Analytics/Fonts/reCAPTCHA — осознанно под реалии РФ-2026 (отмечено как правильное и в аудите).
Роль ИИ в проекте
Проект — образец независимой AI-augmented разработки 2026 с явной doc-driven методологией:
AGENTS.md— база знаний проекта для агентов: структура, конвенции, анти-паттерны, обязательный «цикл безопасности» патча. Задаёт и языковой протокол (рассуждение/инструменты — англ., ответ пользователю — рус.).- Фазовые промпты
docs/prompts/01.04— инженерия процессов: №1 анализ→research→план (Claude Opus 4.8 max effort) с гейтами иAskUserQuestion; №2 «живой» промпт продолжения со статусом и уроками; №3 аудит под OpenCode (Gemini 3.1 Pro / Opus) с параллельными фоновымиtask(); №4 — «глубокий аудит Opus» (max effort) с самопроверкой. - Субагенты / параллелизм: аудит — через фоновые
task(run_in_background)по векторам (безопасность, право, перформанс, SEO, UX); research — через харнессdeep-research(по метаданным: 27 источников, 102 заявления, адверсариальная проверка 24/25, ~109 агентов). - Skills/slash:
deep-research,writing-plans,wp-*(wpcli/plugin-dev/rest/performance/playground). superpowers-цикл (brainstorming → writing-plans → executing-plans) виден вdocs/superpowers/specs|plansдля поздних доработок (видеоотзыв+город, SMTP) — спека с дизайном/рисками/критериями приёмки на каждую задачу. - OpenCode — отдельный харнесс (артефакты
.omo/run-continuation/*); Context7 MCP — для актуальной документации Elementor/ACF. - Мульти-модельность: Claude Opus 4.8 (max effort) как основной; Gemini 3.1 Pro через OpenCode для альтернативного прогона аудита.
Инженерные вызовы
- Боевой прод без staging на shared-хостинге (был инцидент блокировки за непродление) → жёсткий ритуал бэкап-снимок→патч→проверка→откат; идемпотентность патчей.
- Общий single-шаблон #148 на все 6 услуг + Element Cache → протечка пер-страничных правок; решено ранним резолвом целевого ID и отключением Element Cache с safeguard.
- Неочевидные места Elementor: триггеры попапа живут в
_elementor_popup_display_settings(не вpage_settings); баг собственнойsp_find()при записи во вложенные узлы (рекурсивный алиас рвёт связь) → переписан наsp_edit(); обманчивыйcustom_id="email"у поля телефона формы #198. - Перехват чужих виджетов (Unlimited Elements Fullscreen Menu) на фазе capture с
stopImmediatePropagationраньше обработчика Elementor; разметка вwp_footerпечатается ниже скриптов → инициализация вDOMContentLoaded. - CSS-война с kit/reset Hello Elementor: кастомным
<button>нужна специфичность ≥(0,2,0)+!important; высоту слайдов задаватьaspect-ratioот ширины, а неvh. - Аудит без вреда проду: read-only, без тяжёлых сканеров; доказательность каждой находки; разделение фактов и гипотез (там, где нужны доступы — Я.Вебмастер, ИНН для проверки реестра РКН).
Услуги в проекте
- доработка legacy
- аудит
- разработка
- деплой
- 152-ФЗ/ПДн
- SEO
- контент
- безопасность
- производительность
- поддержка