Демо-проект
Правки на WordPress: стенд мастерской «Волокно»
Рабочий сайт в Docker, который можно править, ломать и пересобирать одной командой.
сборка стенда, контент, съёмка · WordPress · Docker · MariaDB · PHP · WP-CLI
в работеСтенд рабочий, кадры сняты, но README дважды расходится с...

Задача
Услугу «поправлю сайт на WordPress» продают кадрами: заказчик хочет увидеть, как выглядит правка, а не прочитать про неё. Чужие сайты в кадр брать нельзя, стоковые скриншоты ничего не доказывают, а «тестовая страница 1» на белом фоне выглядит хуже, чем отсутствие примеров.
Нужен свой WordPress, на котором можно снимать что угодно: править страницы, замерять скорость, включать магазин, ронять сайт и чинить его, гонять заявки в CRM. При этом сайт должен выглядеть как обычный небольшой клиентский - с живым текстом, ценами и журналом, а не как демо-заготовка.
Здесь описан сам стенд: сайт вымышленной столярной мастерской «Волокно» и типовая правка на нём. Компания придумана, задача взята настоящая.
Решение
- Два контейнера: WordPress 7.1 на PHP 8.3 и MariaDB 12.3. Сайт стартует только после того, как база пройдёт healthcheck, а разовый сервис
setupдожидается ответа сайта по HTTP, собирает содержимое через wp-cli и завершается сам. - Контент описан файлами в
setup/content, а не введён руками в админке: 7 страниц, журнал из четырёх записей по трём рубрикам, меню в шапке, подвал в три колонки и собственный шаблон ленты журнала. Поэтому сборка повторяема:down -vиup -dдают тот же сайт заново, а повторныйup -dсодержимое не трогает - скрипт проверяетwp core is-installedи выходит. - Ниша выбрана свободной от остальных демо портфолио: мебель из массива на заказ. Русская локаль ядра, стандартная Twenty Twenty-Five без сборок и конструкторов, ссылки вида
/uslugi/, часовой пояс Europe/Moscow и дата вида «5 августа 2026». - Типовая правка заготовлена в обе стороны: устаревшая таблица прайса из девяти строк и блок из трёх тарифов - «Замер и проект», «Изделие под ключ», «Кухня целиком». Оба состояния лежат отдельными файлами, поэтому кадр «до/после» снимается когда угодно, а откат делается одной командой
wp post update. - Дальше на стенде живут ещё четыре сценария. Магазин на WooCommerce, авария с белым экраном и починка, связка формы с CRM - эти три на том же экземпляре. Замер скорости идёт на отдельной копии стенда на порту 8182 из тех же файлов контента: правки ради замера трогают все страницы сразу, а основной стенд в это время нужен другим сериям кадров.
Детали, которые легко не заметить
- Админка подготовлена к съёмке заранее. Аккаунт называется
editor, а отображается как «Редактор» - этим же именем подписаны записи журнала, поэтому личного в кадр не попадает; сам угол админ-бара при съёмке скрывается селектором. Приветственные окна редактора блоков и полноэкранный режим погашены черезwp_persisted_preferences, иначе первым кадром админки получается модалка «Добро пожаловать». - Akismet и Hello Dolly удаляются при сборке - иначе в кадр лезет плашка «введите ключ API». Демо-запись «Привет, мир!» и «Пример страницы» тоже удаляются: на скриншотах не должно быть следов свежей установки.
- Ни телефона, ни почты, ни адреса нет ни на одной странице. Ретушировать в кадре нечего, а вымышленные контакты никого не подставят.
- Цены и сроки в трёх тарифах не выдуманы: каждая цифра взята из той же таблицы прайса, которую блок заменяет. На кадре «до/после» цифры сходятся.
- README стенда в двух местах расходится с кодом, и оба расхождения оставлены как есть. Первое: README обещает, что сайт слушает только localhost, а compose пробрасывает порт 8181 на все интерфейсы. Второе: README обещает, что нужный файл меню выбирают оба скрипта, а на деле это умеют только скрипты магазина - скрипт формы заявки переписывает меню целиком, поэтому включённый раньше формы магазин теряет из шапки свой пункт. Отдельный аудит стенда поймал первое расхождение и записал его в отчёт находкой; про меню в отчёте нет ни слова. Все десять находок аудита пока стоят в плане работ, ни одна не закрыта. Оставить расхождения видимыми честнее, чем тихо переписать документацию и сделать вид, что их не было.
Скриншоты




