Задача
Что мы сделали
Магазин, доставшийся в наследство вместе с чужим кодом
LikeOn вяжет одежду в Харькове с 2010 года: меринос, кашемир, шёлк, хлопок. Изделие вяжется по контуру, каждый шов собирается по петлям — на одну вещь уходит два-три дня. Продают через собственный магазин на WooCommerce.
Нам достался магазин с живыми заказами, устаревшим ядром, главной на шорткодах и четырьмя закладками в теме. Мы разобрали его до основания и собрали заново — не тронув ни одного заказа покупателя.
Первый экран говорит то, что отличает бренд от перекупщиков: вяжем сами, с 2010 года, от пряжи до готовой вещи — два-три дня.
С чего начинали
Магазин работал на WordPress 6.9.7 и WooCommerce 5.9.1 — версии, от которой актуальная ушла на шесть больших релизов вперёд. Тема — покупной Flatsome с дочерней темой, в которой лежали правки нескольких разных подрядчиков за несколько лет.
В файле функций этой дочерней темы нашлись четыре независимые закладки. Каждая со своим паролем, каждая позволяла выполнить произвольную команду на сервере. Файл последний раз меняли за месяц до начала работ. Всё остальное — обновления, дизайн, тексты — имело смысл только после того, как это убрали.
Главная, собранная кодом
Старая главная была набором шорткодов конструктора: сетка баннеров, заголовки по-русски, подборка «хитов» с вручную вписанными номерами товаров и отзывы, вставленные картинками — скриншотами чужих сообщений. В теле страницы даже остался служебный тег от браузерного переводчика, сохранённый вместе с текстом.
Новая главная — отдельный плагин со своими секциями. Каждый блок тянет данные из магазина сам: рубрики показывают, сколько моделей в них сейчас в наличии, подборка недели собирается из реальных остатков, статьи — из блога. Редактировать ничего не нужно: страница перерисовывается вместе со складом.
Карточка товара в витрине показывает цену, старую цену, размер скидки, сумму экономии и доступные размеры — решение принимается ещё до перехода.
Каталог
425 карточек, 26 рубрик, из них 251 модель в наличии. Каталог показывает только то, что можно купить сейчас, остальное остаётся в базе и доступно по прямой ссылке — чтобы не терять позиции, которые уже проиндексированы.
Карточка товара
Размеры — кнопками, а не выпадающим списком: пять вариантов видно сразу, недоступные зачёркнуты. Рядом с кнопкой «Добавить в корзину» стоит «Заказать в один клик» — для тех, кто не хочет регистрироваться.
Под кнопками — характеристики, которые обычно прячут во вкладку: длина изделия, тип воротника, цвет, узор, состав пряжи, срок изготовления. Это те шесть вопросов, которые покупатель вязаной одежды задаёт менеджеру в директ.
Остальной текст сложен в аккордеоны: описание, характеристики, отзывы, условия доставки и возврата. Страница остаётся короткой, но ничего не потеряно — и поисковик видит весь текст, потому что он в разметке, а не подгружается.
Заказ в один клик
Самый короткий путь: имя, телефон, «Заказать». Панель показывает именно то, что человек покупает — фото, выбранный размер, количество, скидку и итог. Без перехода на оформление, без регистрации, без полей, которые всё равно уточнит менеджер по телефону.
Та же панель открывается и из карточки товара, и из корзины — вся логика корзины остаётся одной, независимо от того, откуда её вызвали.
Поиск, который отвечает сразу
Поиск открывается поверх страницы и показывает товары во время набора — с фото, ценой и размером скидки. Пустой поиск не остаётся пустым: в нём лежат последние запросы этого посетителя, популярные рубрики и товары.
Сервис вместо мелкого шрифта
В вязаной одежде два вопроса срывают покупку чаще цены: «угадаю ли с размером» и «а если будет слишком длинно». Оба вынесены на главную отдельными блоками, а не в подвал вместе с офертой.
Размерная сетка — отдельные таблицы для хлопковых и шерстяных костюмов, мерки в сантиметрах, схема с буквами. Услуга «Ретушь длины» — укорачивание брюк или свитера под рост, с честным предупреждением: укороченная вещь считается индивидуальным заказом и возврату не подлежит.
Украинский язык до конца
Магазин уже был «на украинском» — но только в интерфейсе. В описаниях товаров лежал суржик машинного перевода: «Передняя і задняя части светра», «Вільний крой», «Кожна модниця имеет в гардеробе такую стильную базу». Такие фразы читаются как небрежность бренда, а не как техническая мелочь.
Описания вычитаны вручную, абзац за абзацом. Заодно исчезли следы чужого бренда в текстах, битые внутренние ссылки на удалённые рубрики и ссылки с украинских страниц на русские дубли.
Отдельно — медиатека. У 260 вложений подписи и описания были латинской транслитерацией: kostum_merinos_viski, golf-svobodnoj-posadki-iz-merinosa. 490 полей переписаны человеческим украинским — это то, что видит и покупатель в галерее, и поисковик в разметке.
Бренд в цифрах, а не в прилагательных
Блок о производстве не рассказывает, что бренд «премиальный» — он показывает, как именно вяжут: по контуру, без обрезанных краёв, шов собирается по петлям и обрабатывается паром, готовая вещь стирается специальным средством. Отсюда и два-три дня на одну вещь.
Телефон
Большая часть трафика магазина одежды — с телефона и из Instagram. Корзина на узком экране открывается во весь экран, размеры остаются кнопками, галерея листается пальцем, характеристики не сворачиваются в столбик из двух слов.
Как это делалось
Что под капотом
Платформа
WordPress 7.1.2 и WooCommerce 11.0.1 вместо 6.9.7 и 5.9.1. Своя дочерняя тема, в которой лежит только наш код.
Свои плагины
Четыре отдельных плагина: главная страница, выдвижная корзина, кабинет покупателя и заказ в один клик. Каждый отключается независимо и не тянет за собой остальные.
Для поиска
Разметка товара с ценой, наличием и хлебными крошками, корректные заголовки страниц, robots.txt с закрытыми страницами корзины и служебными параметрами.
Что изменилось
Магазин перестал быть набором чужих решений, наложенных одно на другое. Главная собирается из реального склада, карточка товара отвечает на вопросы до того, как их зададут в директ, заказ делается двумя полями, а тексты написаны языком, на котором бренд говорит с покупателем.
И главное — из магазина убрано то, через что посторонний человек мог выполнить любую команду на сервере с живыми заказами.


