Ребилд сайта детской стоматологии — канонизация, Portland
Ребилд сайта детской стоматологии по спецификации агентства в Portland — 26 часов, канонизация с трейлинг-слешем, сохранение поддиректории блога, интеграция GTM.
Скриншоты сделаны автоматическими инструментами — некоторые элементы могли не загрузиться полностью или перекрываться. Для наиболее точного представления открыть действующий сайт →
Переделать сайт на новом стеке. Реализовать по спецификации. Без импровизаций. Передать готовым к переходу.
Клиент (конечный пользователь): Pine Tree Pediatric Dentistry — детская стоматология без ортодонтии, Portland, OR
Формат сотрудничества: White-label разработка для маркетингового агентства из США
Сроки: январь – февраль 2025 · основная разработка ~8 дней · 26 часов · в срок, без перерасхода
Подход к ребилду
Сайт детской стоматологии без ортодонтии в Portland, восстановленный из единственной таблицы очереди задач по ошибкам — без отдельной карты сайта — где ключевым требованием была канонизация URL, а не структура страниц. Каждая страница должна была принудительно устанавливать редирект с трейлинг-слешем, а блог практики, расположенный в /portland-pediatric-dental-blog/, должен был сохранить свой трёхсегментный путь. Без обоих условий поисковые системы индексировали бы дублирующиеся версии каждого URL, а возвращающиеся родители попадали бы на битые пути.
Агентство владело стратегией; мы — исполнением.
Краткий обзор
| Параметр | Значение |
|---|---|
| Сфера клиента | Медицина — детская стоматология |
| Клиент | Pine Tree Pediatric Dentistry (детская стоматология без ортодонтии, Portland, OR) |
| Формат сотрудничества | White-label разработка WordPress для маркетингового агентства из США, специализирующегося на сайтах для локального бизнеса |
| Тип проекта | Ребилд WordPress на WP Engine |
| Объём | Полный ребилд сайта — услуги детской стоматологии, ресурсы для пациентов, блог, контактные формы, интеграция GTM |
| Сроки | ~8 дней основная разработка (23–30 янв 2025); правки из очереди задач до 27 фев 2025 |
| Затраты | 26 часов при оценке — без перерасхода |
| Команда | 3 специалиста (~20 ч разработка · 4 ч QA · 2 ч PM) |
| Технологии | WordPress · Elementor Pro · Gravity Forms · WP Engine · Yoast · Header Footer Code Manager · Site Checker (плагин QA от xaverPRO) |
| Проверка контента | Разница оригинал-ребилд проверена до передачи — отсутствие пропущенного контента, битых внутренних ссылок и структурных расхождений |
| Результат | Полный ребилд сайта по спецификации; канонический редирект с трейлинг-слешем применён на всём сайте; пути поддиректории блога сохранены; интеграция GTM через Header Footer Code Manager; все пункты очереди задач закрыты до согласования агентством |
| Раунды проверки | ≈4 раунда за 8 дней |
| Затраты на задачу | 5 внутренних задач Redmine · медиана 26 ч / P75 26 ч на задачу |
Постановка задачи
Маркетинговое агентство из США, нанятое Pine Tree Pediatric Dentistry — детской стоматологией без ортодонтии в Portland, OR — привлекло нас для ребилда существующего сайта на Elementor Pro. Практика обслуживает исключительно детей, с единой структурой услуг: профилактика, восстановительное лечение, седативная стоматология, стоматология для особых потребностей, послеоперационные инструкции и рекомендации для первого визита.
В отличие от практик, ведущих параллельные направления ортодонтии и детской стоматологии, эта работает с единым пациентским путём — родитель записывает ребёнка, переходит по единому маршруту услуг и использует единый набор контактных форм. Эта простота сервисной архитектуры делала технические требования более жёсткими, а не более мягкими: каждый URL должен был вести себя идентично, каждая внутренняя ссылка должна была корректно разрешаться, а инфраструктура аналитики должна быть на месте с первой загрузки страницы после переключения.
Задача была точной. Работать по спецификации агентства и очереди задач по ошибкам; выполнять каждую строку как написано; не выходить на прямой контакт с клиентом на всём протяжении. Спецификация агентства была передана в виде единственной таблицы очереди задач по ошибкам — без отдельной карты сайта, карты шаблонов или перечня страниц. Полную структуру страниц пришлось восстанавливать из задач и переписки в чате, а не сверять с формальной таблицей Google Sheets — это было ограничением того, как был организован бриф, а не выбором процесса.
Тестовая среда работала на WP Engine. Риск, от которого агентство страховалось, заключался в специфических для этого ребилда ошибках канонизации URL: посты блога практики находились в трёхсегментном пути (/portland-pediatric-dental-blog/), и каждый URL на сайте должен был принудительно перенаправляться с трейлинг-слешем — без обоих условий поисковые роботы индексировали бы две версии одной страницы, а родители, переходящие по старым закладкам, попадали бы на неразрешённые пути.
Контекст рисков. Сайт детской стоматологии на локальном рынке обслуживает родителей, которые ищут стоматолога для своего ребёнка — часто в условиях временного давления. Структура URL сайта входит в профиль практики в локальном поиске: блог в
/portland-pediatric-dental-blog/накапливает ссылки и закладки со временем.Ребилд, который корректно переносит контент, но позволяет обоим вариантам
example.com/pageиexample.com/page/разрешаться как отдельные URL, передаёт поисковым системам сигнал дублированного контента и возвращающимся посетителям — несогласованный опыт. Этот сбой невидим при визуальной проверке тестовой среды — оба пути загружают страницу — но проявляется при каждом обходе после запуска. Устранить это до переключения, а не после, было ключевым требованием.
Как мы это сделали
1. Шаблон-ориентированная разработка по структуре детских услуг. Сервисная архитектура сайта следовала шаблону детской стоматологии без ортодонтии: страница услуг, ведущая к отдельным страницам услуг по каждому клиническому направлению (профилактика, восстановительное лечение, седативная стоматология, стоматология для особых потребностей, послеоперационный уход), а также страницы первого визита и форм для пациентов.
Каждая страница услуги имела единую структуру — описание процедуры, рекомендации для родителей и контактную форму, направленную в практику. Блог, расположенный в собственной поддиректории практики /portland-pediatric-dental-blog/, был восстановлен с сохранением структуры путей, чтобы сохранить все ссылки с предыдущих публикаций.
2. Канонизация трейлинг-слеша, применена на всём сайте. Спецификация агентства требовала, чтобы все страницы — статические и динамические — были доступны только с трейлинг-слешем, и чтобы все варианты без слеша перенаправлялись на каноническую форму со слешем. Это было реализовано через настройки постоянных ссылок WordPress и правила редиректов, последовательно применённые к страницам услуг, постам блога и архиву блога. Такое решение устранило проблему дублирования URL до запуска и предотвратило последующие артефакты обхода.
3. Спецификация выполнена строка за строкой, по таблице агентства. Очередь задач агентства документировала каждый пробел в контенте и функциональности относительно исходного сайта. Незавершённые блоки контента — включая страницу седативной стоматологии, на которой отсутствовали разделы из оригинала — были приведены в соответствие с оригиналом.
Страница послеоперационных инструкций, содержащая кнопку загрузки PDF, который ещё не был доступен в оригинале, была отмечена и передана агентству, а не тихо пропущена. Пункты страниц услуг, поступившие без ссылок на отдельные страницы услуг, были обнаружены и исправлены. Ни один пробел не был закрыт по предположению.
Принцип прост: при ребилде спецификация является контрактом между агентством и его клиентом. Задача команды разработчиков — защитить этот контракт, а не достраивать его на основе догадок.
4. Интеграция GTM через Header Footer Code Manager, подтверждена до передачи. Агентство требовало перенести скрипт Google Tag Manager с исходного продакшена и установить его через плагин Header Footer Code Manager. Плагин был установлен на тестовую среду, но сам скрипт GTM ещё не был подключён — пробел, который остался бы незамеченным при визуальной QA-проверке, но молча нарушил бы сбор аналитики практики с первой же сессии после переключения.
Интеграция была проверена на работоспособность до того, как сборка ушла в очередь проверки агентства. Мы использовали Header Footer Code Manager вместо встраивания в тему, потому что он централизует все сторонние скрипты — изменения переживают обновления темы, и агентство может проверять или изменять размещения без работы с кодом.
Принудительный трейлинг-слеш и путь /portland-pediatric-dental-blog/ нужно было подтвердить до передачи — оба были не видны при визуальной QA, но проявились бы при каждом обходе и в каждой закладке возвращающегося родителя после переключения. Устранение дублирования URL до запуска и обнаружение хоста тестовой среды в футерной ссылке до того, как агентство её увидело — вот для чего нужен был внутренний QA-раунд.
Результаты
| Метрика | Результат |
|---|---|
| Точность спецификации — структура услуг | Полная лестница детских услуг восстановлена по спецификации; все страницы услуг и ресурсов для пациентов сданы |
| Точность спецификации — паритет контента | Страница седативной стоматологии восстановлена с добавлением недостающих разделов; все остальные страницы соответствуют исходной структуре |
| Канонизация трейлинг-слеша | Применена на всём сайте — страницы услуг, посты блога и архив блога используют редирект с трейлинг-слешем |
| Поддиректория блога | Структура пути /portland-pediatric-dental-blog/ сохранена при ребилде |
| Интеграция GTM | Скрипт Google Tag Manager развёрнут через Header Footer Code Manager, подтверждён до передачи |
| Ссылки на услуги | Пункты страниц услуг связаны с отдельными страницами услуг |
| Сроки | Основная разработка ~8 дней (23–30 янв 2025); все пункты очереди задач решены к 27 фев 2025 |
| Затраты | 26 часов при оценке — без перерасхода, без расширения объёма |
| Адаптивность | QA на разных устройствах подтверждён для большого экрана и мобильных устройств |
| Статус сайта | Работает на WP Engine, открывается по адресу https://www.pinetreepediatricdentistry.com/. |
Результат, если кратко: спецификация агентства была выполнена как написана по всей структуре детских услуг, в рамках согласованных часов, со всеми пунктами очереди задач, решёнными до утверждения. Сайт продолжает работать.
Контроль качества
Внутренняя проверка ссылок (issue #159) выявила кнопку в футере, ведущую на хост тестовой среды вместо живого пути your-first-visit — битый URL, который остался бы незамеченным при визуальной проверке — а сверка паритета показала, что каждая страница разрешалась как с трейлинг-слешем, так и без него — тот самый сигнал дублированного контента, для предотвращения которого и была создана спецификация агентства; оба дефекта были исправлены до передачи.
До сдачи QA проходил через Site Checker — см. наш подход к QA по категориям и принцип нулевых ошибок. Собственный QA-слой агентства — их инструменты, их процесс — работал после передачи и фиксировал замечания в общую очередь задач для нашего цикла исправлений до их согласования.
Процесс
| Этап | Длительность | Результат |
|---|---|---|
| Бриф и оценка | 1 день | Спецификация агентства проверена; оценка 26 ч согласована |
| Разработка | ~8 дней | Полный ребилд сайта на тестовой среде WP Engine; реализована однотрековая структура услуг; применены правила трейлинг-слеша |
| Внутреннее QA и проверка | 2 дня | Проработаны пункты очереди задач по ошибкам; исправлены ссылки на услуги, паритет контента седативной стоматологии, интеграция GTM |
| Проверка спецификации | 1 день | Паритет контента и канонизация URL подтверждены по спецификации |
| Сдача и DNS-переключение | 1 день | Сайт запущен на WP Engine, без простоев |
Этапы перекрываются (QA шёл параллельно с поздней разработкой), поэтому календарный срок составляет примерно 35 дней от открытия проекта до финального подписания очереди задач, при том что основная разработка завершилась за первые 8 дней.
Команда
Команда проекта
- Евгений Карпов — ведущий разработчик (полный ребилд сайта, система шаблонов, канонизация трейлинг-слеша)
- Анна Полунина — очередь задач QA и исправление ссылок на страницы услуг
- Никита Тумашевич — координация QA и маршрутизация задач
- Антон Херсун, xaverPRO — руководитель проекта (оценка, коммуникация с агентством, согласование)
Агентство оставалось видимым поставщиком; мы оставались невидимы для конечного клиента на протяжении всего переключения и раундов исправлений после сдачи. Все решения по структуре URL, стратегии редиректов и архитектуре страниц услуг принадлежали агентству; наша роль заключалась в точности исполнения поставленной ими спецификации.
Агентствам, заказывающим ребилд WordPress
Ребилд сайта детской стоматологии ставит под удар URL-архитектуру, уже приносящую трафик и ссылки. У этой практики — один филиал с блогом о детской гигиене; у других — сетевая клиника с каталогом процедур и страницами врачей. Если подрядчик не настроит редиректы, старые адреса начнут отдавать 404. Если не зафиксировать правила слеша, Google увидит дубли страниц, а позиции упадут. Если мета-теги перезапишутся при импорте, вы потеряете контроль над сниппетами.
Подрядчику стоит задавать не вопрос «перенесёте ли вы сайт?», а вопрос «как именно вы защитите каждый URL от потери позиций и дублирования».
Пришлите адрес текущего сайта, черновик карты редиректов (если есть) или макеты. Мы проверим вашу карту редиректов на полноту, найдём возможные потери в выдаче и вернём фиксированную смету в часах. Аудит без оплаты, ответ в течение рабочего дня.
У вас ещё нет ТЗ? Пришлите описание в один абзац — мы вернёмся с вопросами, которые стоит задать. Прислать описание →
Site Checker запускается до того, как агентство что-либо видит.
Перед передачей каждый сборки в тестовой среде прогоняется через Site Checker — WordPress QA-плагин, который мы разработали и поддерживаем. Это шлюз с нулевой терпимостью к ошибкам: к агентству не уходит ничего с открытыми проблемами. Предупреждения рассматриваются и признаются некритическими; агентство получает чистый старт для своего слоя QA, а не тестовый сайт с известными проблемами в очереди.