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

«Строй-Прораб 24/7» — доработка и аудит сайта (WordPress + Elementor)

Строительная компания (пристройки/надстройки, кровля), Москва/МО · Строительство / лидогенерация (B2C/B2B)

Fullstack WordPress/Elementor инженер и технический аудитор (соло)

  • 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
дополнительных ad-hoc доработок (Д1–Д5: моб. меню, FAB, MAX, квизы-карточки, модалка расчёта)
53
коммита за период 01–28.06.2026 (локальный git, ветка main)
57/100
выведенный индекс здоровья сайта по итогам аудита (6 направлений)
~30
находок аудита с доказательствами (LEAD/SEC/LAW/PERF/SEO/OPS), приоритизированы
74
записи лидов в журнале CPT sp_lead (на момент аудита)
27→102→24
deep-research: источников → заявлений → подтверждено адверсариальной проверкой
v0.1.44
версия кастом-плагина stroyprorab-customizations

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

Заказчик — строительная компания «Строй-Прораб 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 — последний пришлось отключить с safeguard pre_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) и адаптив → готовый байт-точный откат. Учтены особенности окружения: OPcache revalidate_freq=60 (ждать после деплоя), специфичность CSS против kit/reset (<button> требует ≥(0,2,0)+!important).
  • Лиды: общая sp_save_lead() → приватный CPT sp_lead (журнал в админке) + email + Telegram с ретраями на сетевые сбои; затем аутентифицированный SMTP info@домен для доставляемости (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
  • контент
  • безопасность
  • производительность
  • поддержка