Перейти к основному контенту
Заметки · White-label

Первый год был хаосом. Потом мы всё записали.

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

— Содержание +
  1. Три сборки одного агентства — и ни одна не похожа на другую
  2. Что значит «записать» на самом деле
  3. Что изменилось, когда документ появился
  4. Урок для агентства

Три сборки одного агентства — и ни одна не похожа на другую

В самом начале, пока ничего из этого не было записано, сайты одного и того же агентства собирались тремя разными способами.

Один разработчик ставил Elementor Forms — они уже были в макете. Другой менял их на Gravity Forms. Третий не трогал то, что есть, по принципу «работает — не лезь». Это было самое начало: стандарта не было ещё ни у нас, ни у агентства. Три разные сборки. Три разных поведения форм. Три разные ветки обсуждения по одному и тому же вопросу.

И это было ещё самое простое из разногласий.

Был ещё вопрос, какие единицы CSS брать. Удалять ли страницу-образец WordPress в первый же день или оставить. Писать заголовки с каждого слова с большой буквы — Title Case (Personal Injury) — или только с первого, sentence case (Personal injury). Нужна ли hero-блоку главной своя точка адаптации или хватит стандартных точек адаптации Elementor. Ставить ли плагин кэширования на WP Engine. (У WP Engine кэш встроенный. Плагин его удваивает. В первые полгода это в команде знали не все.)

У каждого вопроса был один правильный ответ — и в начале по нескольку неправильных, одновременно работающих на разных сайтах.

Замечало это и агентство. Всплывало нечасто — может, пару раз за всё время, — но разговор всегда шёл по одному сценарию: этот сайт делает X, предыдущий делал Y; можно свести к одному? И, честно говоря, своего стандарта у агентства тоже не было. Ту самую одну колею мы в итоге выбрали вместе.

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

Это и была боль. Лечилась она не обучением. Лечилась тем, что мы это записали.

Что значит «записать» на самом деле

Когда у команды разнобой на выходе, первым делом тянет назначить встречу. Собрать всех, пройтись по правилам, договориться, идти дальше. Мы пробовали. Работает неделю. Ко второй неделе половина договорённостей растворяется обратно в «ну, на этом проекте я подумал…», а другая распадается на конкурирующие толкования.

Встреча — это течение. Документ — закреплённая точка.

— Рабочая заметка · 2024

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

Нынешняя внутренняя версия документа начинается так:

# xpro · WordPress build conventions
# v17 — 2026-04-30

stack:
  page-builder:  elementor-pro-only
  forms:         gravity-forms          # не Elementor Forms
  seo:           rank-math
  caching:       none                   # у WP Engine встроенный кэш
  hosting:       wp-engine-standard     # среда, предоставленная агентством

content:
  heading-case:  title-case             # "Personal Injury", не "Personal injury"
  h1-per-page:   1
  units:         px-only                # без vw, без clamp без обоснования
  breakpoints:   elementor-defaults     # свои точки адаптации отключены

phone-numbers:
  format:                  tel:+1XXXXXXXXXX
  always-clickable:        true
  always-include-country:  true

За каждой строкой — закрытый спор. На большинство ушло по проекту.

Несколько примеров — со скрытой историей каждого:

«Всю вёрстку — на Elementor Pro.»
Мы всё собираем на Elementor — на нашей стороне это никогда особо не обсуждалось. Правило всё равно записано: «очевидно для нас» — не то же самое, что «зафиксировано». Не раз сборка выглядела так, будто её делали двумя разными способами, — и если размотать, разнобой шёл из того, как проект настроили до того, как он попал к нам, а не из того, что разработчик посреди работы менял конструктор. Записанное правило сделало ожидание явным, а не подразумеваемым — и для нас, и для агентства.

«Только Gravity Forms. Elementor Forms не использовать.»
На Gravity Forms у агентства уже была налажена доставка писем, нужная им условная логика и интеграции с аналитикой, которые собирали данные в их отчётность. Elementor Forms — вполне нормальный плагин для проекта другого рода. Но на этих проектах смешивать оба означало: у одних форм есть аналитика, у других нет; у одних защита от спама, у других нет; и агентству приходилось выяснять это заново на каждом новом сайте. Правило не про то, какой плагин лучше. Оно про то, чтобы у одного вопроса не было двух ответов.

«У WP Engine кэш встроенный. Плагины кэширования не ставить.»
Это стоило полдня отладки на тестовой среде, которая после деплоя упорно отдавала старые ресурсы. Причина — плагин кэширования, поставленный по привычке, поверх собственного слоя кэша WP Engine. Два кэша наперегонки. Лечение — снять плагин. Правило — в следующий раз его не ставить.

«Телефоны — в формате tel:+1XXXXXXXXXX. Код страны — всегда.»
Какое-то время телефоны попадали на страницы вразнобой: где-то обычным текстом без ссылки tel:, где-то без кода страны, где-то правильно. Номер обычным текстом не вызовет набор, когда посетитель нажмёт на него на телефоне. Проблемой был именно разнобой, а не какой-то один способ вывода. Лечение — выбрать один формат и держать его всегда. Правило — эти несколько символов, записанные так, чтобы вопрос больше не открывался.

«Заголовки и пункты меню — Title Case, каждое слово с большой.»
Деталь, которая кажется придиркой, пока не отсмотришь стопку сайтов за неделю. На одних Personal Injury, на других Personal injury. Оба варианта по-своему защитимы. Вместе — не защитимы никак. Мы просто упустили это из виду; ничьим осознанным решением это не было — поэтому закрыть это могло только записанное правило.

«Только пиксели. Никаких vw и clamp без явной необходимости.»
Похоже на ограничение творчества. Это не оно — это правило про предсказуемость. Сайт, собранный на clamp и vw, нормально выглядит на мониторе разработчика — и непредсказуем во всём остальном. Проверяющие агентства сидели на разных ноутбуках, планшетах и внешних экранах с разным масштабированием. Пиксельная вёрстка у всех одинаковая. Вёрстка на адаптивных единицах — это несколько разных вёрсток. Правило не про вкус в CSS. Оно про то, чтобы проверяющий видел тот же сайт, что мы собрали.

«Один <h1> на страницу. Соблюдать иерархию заголовков.»
Агентство раз за разом отмечало одно и то же: страницы с более чем одним <h1>. Так выходило, потому что разработчик ставил hero-виджет, настроенный как <h1>, потом заголовок секции — тоже <h1>, потому что визуально так выглядело правильно. Браузеру всё равно; аудиту — нет. Правило не про теорию SEO. Оно про то, чтобы не переделывать иерархию заголовков каждый раз, когда на это укажут.

«Свои точки адаптации Elementor отключить. Только стандартные.»
Это пришло из рассогласования, а не из одного инцидента. Мы тестировали сборки на одном наборе точек адаптации, агентство проверяло на другом. То, что у нас выглядело правильно, у них выглядело сломанным, и наоборот — притом что по сути никто не был неправ. Лечение было не в споре, чьи точки адаптации лучше, — а в том, чтобы согласовать один общий набор, а остальное отключить. Стандартные точки адаптации задокументированы, предсказуемы и одинаковы по обе стороны проверки.

Можно продолжать. Есть правила, какие шрифты грузить через TypeKit, а какие никогда не заливать вручную. Какие записи карты сайта включать, какие подавлять. Как помечать target="_blank" на исходящих ссылках. Удалять страницу-образец WordPress в первый же день. UpdraftPlus — только на время разработки.

Ни одно из них не хитрое. Все — закрытые.

Что изменилось, когда документ появился

Чего мы не предвидели — это где на самом деле оказалась выгода. Не столько на нашей стороне. На стороне агентства.

До документа агентству приходилось проверять наши сборки медленным способом: открывать страницы, сверять правила вручную, заново разбирать одни и те же вопросы на каждом новом сайте — потому что нельзя было считать, что любые две сборки согласованы. После документа сборки стали достаточно единообразными, чтобы агентство перестало это делать. Они опирались на автоматическую проверку, которая показывала, если что-то не так, и реагировали на отмеченное — вместо того чтобы каждый раз вручную пересматривать правила с нуля.

В этом и вся история того, что изменилось: нагрузка по проверкам ушла с агентства. Не потому, что нам стали больше доверять вообще, а потому что единообразие проверяемо, а разнобой — нет. Записанный стандарт и сделал сборки проверяемыми в принципе.

Урок для агентства

Если вы маркетинговое агентство, которое отдаёт WordPress-разработку на подряд — одной студии или нескольким, — отсутствие письменного руководства — это налог, который вы платите каждую неделю. Налогом вы его не видите. Вы видите «обычную цену работы с разработчиками». Это не обычная цена. Это цена того, что каждый разработчик заново изобретает правила вашего портфеля, а вы потом гасите получившийся разнобой временем своих проверяющих.

Два практических наблюдения с нашей стороны.

Первое. Руководству не нужно быть идеальным, чтобы начать. Пять правил, записанных и согласованных, сэкономят в первый же месяц больше времени, чем документ из пятидесяти правил, который писали полгода. Начните с конфликтов, которые уже были. Добавляйте правило каждый раз, когда всплывает новый. За год наберётся что-то серьёзное. За два — будете удивляться, как работали без него.

Второе. Оценивая нового подрядчика, спросите, есть ли у него такой документ — не маркетинговая бумажка, а рабочий внутренний стандарт. Подрядчик, который может дать вам руководство, которым реально пользуется, — это подрядчик, чьи сборки будут предсказуемы от проекта к проекту. Подрядчик, который не может, предлагает вам свой первый год хаоса как ваш первый год надзора за ним. Эту цену можно принять — иногда подрядчик того стоит. Но цена реальна, и стоит понимать, что вы её платите.

Первый год работы без правил неизбежен — в первый раз. Во второй раз это уже выбор.

Мы выбрали записать правила. Большая часть того, что мы как студия делаем сейчас, выросла из этого одного решения.

— Работаете над чем-то похожим?

Если что-то из описанного вам знакомо, стоит поговорить.

Заметки из практики

Коротко: что мы замечаем в последнее время.

Одиночные наблюдения из активных проектов — что нас удивило, что сломалось, что мы меняем в своей работе.

Прокрутить вверх