На сайте студии АрендаДекора (Woodmart + WooCommerce) починил гонку AJAX при бронировании из каталога, заменил нестабильное поле дней на дату аренды, почистил битые иконки состава фотозон по всему каталогу, добавил загрузку фото в блок «Об авторе» и убрал фаталы PHP 8 на карточке товара и портфолио.
Задача
На сайте аренды декора и фотозон сломалось бронирование из каталога: в корзину уходил один товар, количество больше единицы для гостей не учитывалось, поле «количество дней» работало нестабильно. Отдельно часть иконок в блоке «Состав фотозоны» отдавала 404 из‑за пробелов в URL, в статьях не было нормального фото автора, а отдельные карточки товара и портфолио падали с критической ошибкой PHP 8.
Решение
Диагностика гонки AJAX: Woodmart и WooCommerce одновременно обрабатывали form.cart в каталоге
Каталог: отдельная форма loop-add-to-cart, блокировка кнопок на время добавления, qty из поля количества в data-quantity
Checkout: убрал самописное «количество дней», поставил datepicker даты аренды с валидацией и сохранением в заказ
Состав фотозоны: trim и очистка %20 в URL иконок на выводе плюс массовая чистка meta у 27 товаров из 102
Блок «Об авторе»: поле загрузки фото в профиле пользователя и вывод в author-bio вместо пустого Gravatar
PHP 8: безопасный stock progress bar Woodmart при пустом _stock и безопасный get_the_excerpt для конфликта Beaver Builder и WPBakery
Студия АрендаДекора
arendadecora.ru — аренда фотозон и декора для мероприятий в Москве на WordPress, WooCommerce и теме Woodmart. Каталог с кнопкой «Бронировать», карточки с тарифами по дням и самописный блок состава фотозоны. Задача была не в редизайне, а в рабочих сценариях бронирования и стабильности витрины.
Каталог и бронирование
В каталоге при быстрых кликах «Бронировать» в корзину попадал один товар: конфликтовали AJAX Woodmart и WooCommerce. Для гостей количество из поля qty уходило как 1. Развёл формы, синхронизировал quantity и проверил сценарий с несколькими позициями. Поле дней на checkout заменил на дату аренды с сохранением в заказ.
Состав фотозоны без битых иконок
Во вкладке «Состав фотозоны» часть иконок отдавала 404: в meta сохранялись URL с хвостовыми пробелами и %20. Почистил вывод и прогнал базу — 27 товаров из 102 с составом. На витрине снова grid, bag-tick и остальные SVG.
Карточка после PHP 8
Страницы вроде «Неуловимый Джо» и часть портфолио обрывались на середине. Woodmart падал на round('') при пустом остатке, а Beaver Builder ломал get_the_excerpt в сетке WPBakery. Обернул оба места безопасными обработчиками в child-теме — страницы открываются целиком.
Блок «Об авторе»
В статьях блок автора тянул пустой Gravatar. Добавил поле «Фото для блока О авторе» в профиле пользователя и вывод в шаблоне author-bio — клиент загружает портрет из админки без правки кода.
Результат
Несколько товаров и нужное количество стабильно попадают в корзину из каталога
На checkout выбирается дата аренды и она уходит в заказ
Иконки состава фотозон отображаются по всему каталогу
В статьях можно задать фото автора из профиля
Карточки товара и портфолио без критических ошибок PHP 8
cafe-matreshka.ru - обмен доменов WordPress
Для сети кафе «Матрёшка» (Саратов) сделал обмен доменов как у ff64/fulbropu: новый сайт с tet.cafe-matreshka.ru вывел на основной cafe-matreshka.ru, старую версию убрал на поддомен. Поправил ссылки и окружение, настроил отправку форм отзывов на почту клиента через SMTP на Beget.
Задача
Новый сайт уже стоял на tet.cafe-matreshka.ru, нужно было за выходные вывести его на основной cafe-matreshka.ru так, чтобы все ссылки и страницы работали, а старый сайт с основного домена переехать на tet. Отдельно — формы отзывов в контактах должны слать заявки на почту клиента; почта домена была на Яндексе без ящика для SMTP сайта — перевёл отправку на Beget.
Решение
Обмен доменов: новый WordPress → cafe-matreshka.ru, старый → tet.cafe-matreshka.ru
Проверка URL, редиректов, меню, медиа и форм после смены хостов
Формы отзывов/обратной связи — уведомления на рабочую почту клиента
Исходящая почта сайта через SMTP на Beget (доменная почта на Яндексе без ящика для сайта)
Новый сайт на основном домене
cafe-matreshka.ru открывает актуальный WordPress сети «Матрёшка»: hero, меню, банкеты, галерея, лояльность, контакты. Раньше эта сборка жила на tet.
Банкетный зал и разделы
Внутренние страницы (банкеты, галерея, поминальные обеды, лояльность, бронь) остались на своих ЧПУ после смены домена — без битых ссылок.
Галерея
Контент и медиа подтянулись на основной домен. Старая версия сайта доступна на поддомене tet. — как бэкап/архив, не на проде.
Формы и почта
Формы отзывов в контактах шлют на почту клиента. Исходящую почту сайта настроил через SMTP на Beget.
Результат
Новый сайт на cafe-matreshka.ru, старый на tet.
Меню, страницы и медиа без битых ссылок
Формы отзывов и SMTP работают
ff64.ru - копия FulBroPu с ребрендингом
Для фулфилмента FF64 (Саратов) перенёс структуру и контент с fulbropu.ru на www.ff64.ru. Старую версию ff64 спрятал от индексации. Перекрасил акцент в сиреневый, убрал WhatsApp, переименовал и добавил услуги упаковки, подставил контакты/карту Саратова, формы на рабочую почту клиента, Telegram на его номер. Логотип меняется из админки.
Задача
Нужно было полностью скопировать fulbropu.ru на www.ff64.ru (без страницы «Забор груза с рынков»), сохранить старый ff64 вне индекса, сменить оранжевую гамму на сиреневую, убрать WhatsApp, убедиться что контент и лого правятся из админки, переименовать «Упаковка по тех. заданию» в «Упаковка для маркетплейсов», добавить «Упаковка товаров» по тому же шаблону, подставить контакты/Яндекс.Карту как на старом ff64, бренд FF64 на контактах, все формы на рабочую почту клиента, кнопки Telegram на номер клиента.
Решение
Бэкап старого www.ff64.ru и скрытие от индексации; разворот копии fulbropu на домене
Проверка редактирования контента из админки; логотип уже менялся штатно — подтвердил клиенту
Убрал WhatsApp из шапки, подвала и блока контактов
Переименовал услугу в «Упаковка для маркетплейсов»; добавил «Упаковка товаров» по тому же шаблону; страницу забора с рынков не переносил
Контакты и Яндекс.Карта под Саратов (склад клиента); на странице контактов — FF64 вместо FulBroPu
Формы на рабочую почту клиента; кнопки Telegram на номер клиента
Источник: fulbropu.ru
Оригинал — фулфилмент FulBroPu с оранжевым акцентом и WhatsApp в шапке. Структура услуг, блоки «О компании», процесс и отзывы стали основой копии.
Результат: ff64.ru
На домене FF64 — та же композиция, но сиреневая палитра, логотип ФФ64, без WhatsApp. В шапке Telegram и заказ звонка. Старый сайт спрятан от индекса.
Услуги под маркетплейсы
«Упаковка по тех. заданию» стала «Упаковка для маркетплейсов». Добавлена «Упаковка товаров» по тому же шаблону. «Забор груза с рынков» не копировал — по ТЗ не нужна.
Новая услуга упаковки
Страница «Упаковка товаров» собрана по образцу исходной услуги: те же блоки, уже под бренд и палитру FF64.
Контакты и заявки
Контакты, карта и реквизиты подставлены как у FF64. Бренд FF64 вместо FulBroPu, WhatsApp убран. Формы и Telegram ведут на реквизиты клиента.
Результат
ff64.ru работает как копия fulbropu с ребрендингом FF64
Сиреневая тема, без WhatsApp, лого из админки
Услуги упаковки обновлены, забор с рынков исключён
Контакты, карта, формы и Telegram под Саратов
good-car.ru - доработки каталога авто
На good-car.ru (Саратов, авто с пробегом) закрыл пакет правок по ТЗ: вынес «Наши подборки» выше списка марок, привёл объём двигателя к виду 1,5/1,6 л, добавил плашки преимуществ, разделители в цене, заменил CTA на «Позвоните мне», показал смену баннера, доработал пробег и мобильный номер по локации, плюс ускорил снятие/обновление авто из фида.
Задача
Автосалон GOOD CAR: каталог на WordPress, авто приходят фидом. По ТЗ нужно было поднять блок подборок по сумме на первый экран (вместо списка марок), округлить объём двигателя (1458 → 1,5 л), добавить плашки «один владелец / маленький пробег / отличное состояние», писать цену как 875 000, убрать «Купить» и кредит в пользу «Позвоните мне», научить менять баннер под акции, дописать пробег и сокращать объём до 1.6/1.8, в мобилке показывать кликабельный телефон площадки авто, ускорить снятие проданных и обновление цен из фида (раньше часы задержки).
Решение
Переставил блоки на главной: «Наши подборки» по сумме выше списка марок, в зоне первого экрана
Округление объёма двигателя до читаемого формата (1,5 / 1,6 / 1,8 л)
Плашки преимуществ на карточке: один владелец, маленький пробег, отличное состояние
Формат цены и пробега с разделителями разрядов (875 000 ₽, 110 911 км)
Убрал «Купить» / «Рассчитать в кредит»; CTA «Позвоните мне» (+ обмен оставил рядом)
Заменил главный баннер и показал клиенту, как менять его под акции
В мобилке кликабельный телефон в шапке карточки по локации авто
Настройка фида: быстрее снятие с продажи и обновление стоимости после изменений в учёте
Подборки на первом экране
Блок «Наши подборки» по суммам (до 300 000, 300–700 тыс. и т.д.) вынесен выше списка марок — сразу после баннера и поиска, без скролла вглубь главной.
Марки ниже подборок
Список марок с количеством авто остался, но уже после подборок по бюджету. Покупатель сначала выбирает ценовой коридор, потом бренд.
Карточка: цена, CTA и плашки
Цена с пробелами (1 560 000 ₽). Вместо «Купить» / кредита — оранжевая «Позвоните мне». Плашки преимуществ: один владелец, маленький пробег, отличное состояние. На карточке виден адрес площадки авто.
Объём и пробег
В характеристиках объём округлён до 1,6 л, пробег с разделителями. Тот же принцип для 1,5 / 1,8 и подписи пробега по ТЗ.
Мобилка: телефон площадки
В шапке карточки кликабельный телефон площадки, на которой стоит авто. Кнопка «Позвоните мне» внизу — звонок без лишних шагов.
Из одностраничного лендинга автосервиса DonTech сделал многостраничный сайт: CPT «Работы» с архивом и карточками, форму /zapis/ с PIN на email (под Яндекс.Директ), города с разными ящиками и копией админу, настройки в админке. Потом выровнял контакты в шапке, добавил редактирование филиалов без кода и счётчик Метрики.
Задача
Сайт был лендингом: hero сидел в header.php вместе с шапкой, из админки правилась в основном галерея. Нужен раздел «Работы» как у новостей (превью + пагинация + страница работы), нормальное меню, транслит ЧПУ. Отдельно — форма записи с PIN на email под Директ, города с разными почтами и копией админу. Потом — ровная шапка с несколькими филиалами из админки и Метрика.
Решение
CPT «Работы»: список /raboty/, карточка работы с формой внизу, заголовок архива из админки
Меню вынес во «Внешний вид → Меню»; плагин транслитерации SEO URL
Страница /zapis/: подтверждение email PIN-кодом, после подтверждения поля email/PIN блокируются
Города в select + «Свой» (свободный ввод); письма на email города и общую почту; таблица городов/почт и слоты времени в админке
Шапка: адрес и телефон в одну линию; настройка филиалов «Контакты в шапке» без правки кода
Яндекс.Метрика через отдельный файл/настройку, показал где править
От лендинга к разделам
autodontech.ru — сервис KIA/Hyundai/Genesis. Hero и шапка были в одном header.php, из‑за этого первый экран тянулся на внутренние страницы. Развёл структуру и добавил нормальные разделы поверх самописной темы.
Каталог «Наши работы»
CPT как у записей: превью с фото, заголовком и отрывком, пагинация, страница работы. В админке — пункт «Работы» и правка заголовка списка без кода.
Запись с PIN и городами
Страница /zapis/ под Директ: email → код → остальные поля. Город из списка или «Свой»; заявка уходит на почту филиала и общую. Виды работ, города и слоты времени правятся в админке.
Шапка филиалов
Выровнял адрес и телефон в линию. В «Внешний вид → Контакты в шапке» филиалы добавляются строками City|Адрес|Телефон|Короткое имя — без копирования HTML.
Результат
Раздел работ и меню работают как на нормальном сайте
Форма записи с PIN и геомаршрутизацией писем
Филиалы в шапке и Метрика без правки темы вручную
vinterio.ru - 1С, WooCommerce и SEO-аудит
У бренда интерьерных часов Vinterio товары из 1С:УНФ (облако) сыпались вариативными, пропадали с витрины при наличии в учёте, панно и коллекция ГрандВинтерио не вставали в свои разделы. Настроил обмен и маппинг категорий, дал инструкции по номенклатуре без лишних характеристик. Отдельно сделал технический SEO-аудит перед запуском индексации.
Задача
Новый WooCommerce на vinterio.ru: из 1С товары приходили вариативными (лишние вариации в карточке, цену правили руками). Часы/панно/аксессуары были в админке, но не на витрине или «нет в наличии» при остатке в базе. Нужны папки 1С → категории сайта и актуальные стоки. После обмена — технический SEO-аудит до индексации.
Решение
Разобрал плагин обмена и настройки интернет-магазина в 1С:УНФ (облако)
Настроил категории: «Часы настенные», «Панно» и связь с папками номенклатуры
Остатки и отображение на витрине; инструкция клиенту по переоприходованию без лишних характеристик
Панно вернул в раздел и меню (/product-category/panno/); модели 90 см — в коллекцию ГрандВинтерио
Показал, где править ссылки меню во «Внешний вид → Меню»
Технический SEO-аудит нового сайта с отчётом .docx и рекомендациями по старту индексации
Витрина Vinterio
vinterio.ru — интерьерные часы и панно. Каталог небольшой (~30 позиций), но критична связка с 1С: типы товаров, категории и остатки без ручной правки каждой карточки.
Простой товар из 1С
Раньше выгрузка делала вариативные карточки. После настройки обмена и номенклатуры без лишних характеристик позиция приходит простой: цена и «N в наличии» с учёта, без ручного переключения типа.
Категории часов и панно
Папки 1С «Часы настенные» / «Панно» завязал на категории WooCommerce. Панно убрал из общего shop туда, где им место; в меню поправил URL раздела.
Коллекция ГрандВинтерио
Модели Ø90 см вернул в коллекцию /kollektsiya/grand-vinterio/ — клиент сам донастроил привязку по инструкции, я проверил структуру.
Меню — настройка
Отдельным скрином показал клиенту «Внешний вид → Меню»: как менять ссылку «Панно» на /product-category/panno/, чтобы раздел не терялся после обменов.
Технический SEO-аудит
Сайт ещё не в индексе — как раз момент для технастройки. Сделал аудит с отчётом: что поправить до запуска, чтобы не копить ошибки индексации. Дальше клиент решал, чинить сам или отдельным этапом.
Результат
Выгрузка из 1С без лишних вариаций
Категории, панно и коллекция на своих страницах
SEO-аудит с отчётом перед индексацией
sib-prostor.ru - бронь туров и 404 категорий
После обновления темы на sib-prostor.ru сломалась запись: лишние поля платёжки, год рождения только с 2025, английские подписи в фильтрах, «Доступность» вместо даты. Исправил форму и карточку тура, избранное без логина. Позже категории давали 404 — конфликт rewrite в теме/child и правок SEO: починил ЧПУ, объяснил клиенту хрупкость стека.
Задача
После обновления темы клиенты упирались в платёжные поля при брони, дату рождения нельзя было выбрать раньше 2025, в поиске экскурсий висели Activity/Destination/Clear Filter, в карточке «Доступность» и счётчик мест. Нужно избранное без регистрации. Позже /adultchild/ и афиша отдавали 404 — ломались ЧПУ категорий.
Решение
Убрал лишние поля платёжного поручения на шаге бронирования
Расширил год рождения: 1900–2024
Перевёл заголовки фильтров и «Сброс фильтра» на русский; «Доступность» → «Дата экскурсии»
Скрыл счётчик мест и старый сценарий избранного с обязательной регистрацией
Сделал сохранение в избранное без логина + страница /izbrannoe/ и ссылка в шапке
Убрал баннер «Закажите прямо сейчас…»; починил кэш Акселератора, мешавший переводам на мобилке
404 категорий: конфликт rewrite traveltour_rewrite_tour_category_urls (тема + child после правок SEO) — восстановил ЧПУ
Каталог экскурсий
sib-prostor.ru — туры и экскурсии по Сибири/Алтаю на TravelTour. После обновления темы посыпалась запись и фильтры — точечно починил UX брони и поиск.
Год рождения с 2025
В дате рождения datepicker отдавал только будущие годы. Расширил диапазон до 1900–2024, убрал лишний блок платёжных реквизитов на подтверждении.
Фильтры на русском
В /poisk-ekskursij/ висели Activity, Destination и Clear Filter. Перевёл подписи; на мобилке мешал кэш Акселератора — временно отключил кэш плагина.
Карточка тура и избранное
«Доступность» → «Дата экскурсии», скрыл счётчик мест. Избранное без регистрации: сердечко ведёт на /izbrannoe/, в шапке на десктопе и мобилке.
404 категорий туров
Упали /adultchild/ и афиша. Сначала казался Rank Math, по факту — Cannot redeclare traveltour_rewrite_tour_category_urls() после правок functions.php. Починил rewrite, ЧПУ категорий снова живые.
Результат
Форма записи и фильтры приведены к ТЗ
Избранное без регистрации
Категории туров открываются без 404
ursaopt.ru - заявки снова на почту
После смены темы на ursaopt.ru формы молчали: на хостинге были кривые SMTP-настройки от прошлого подрядчика. Поднял отправку через стандартный wp_mail с почтой на домене и переадресацией на складской ящик клиента. Полгода спустя заявки снова пропали — в WooCommerce торчал чужой email получателя, вернул правильный адрес.
Задача
После редизайна заявки с ursaopt.ru перестали доходить на почту. Предыдущий подрядчик временно слал письма со своей почты Beget — потом всё отвалилось. Хостинг BashHosting почти не помог с SMTP. Через полгода снова тишина: уведомления уходили на чужой Gmail в настройках магазина.
Отключил лишний почтовый плагин, оставил стандартный wp_mail
Настроил почту на домене и перенаправление на складской ящик клиента
Проверил тестовой заявкой; объяснил клиенту, где смотреть адрес получателя
Повторно: нашёл в настройках магазина чужой email уведомлений, вернул складской ящик клиента
Заявки снова доходят
ursaopt.ru — опт стройматериалов в Стерлитамаке. После редизайна письма не уходили: кривой SMTP от прошлого исполнителя. Настроил отправку с домена и переадресацию на складской ящик, лишний плагин отключил. Позже снова починил получателя уведомлений WooCommerce — там оказался чужой email.
Результат
Формы и уведомления о заказах снова на нужную почту
Повторный сбой закрыт правкой адреса получателя
printolog.ru - сайт после обновления PHP
У типографии printolog.ru после апгрейда PHP с 7.2 фронт и админка легли. Через панель Beget диагностировал причину: Caldera Forms несовместим с PHP 8.2. Плагин отключил, сайт поднял, клиенту объяснил, что включать его нельзя и лучше заменить формы.
Задача
После обновления PHP с 7.2 на более свежую версию на Beget printolog.ru выдавал ошибку и не открывался. Нужно было быстро поднять сайт и найти виновника.
Решение
Зашёл через панель Beget, проверил окружение и плагины
Нашёл причину: Caldera Forms несовместим с PHP 8.2
Отключил плагин — сайт снова открывается на https://printolog.ru/
Предупредил клиента не включать Caldera Forms и заменить формы на актуальный плагин
Сайт снова онлайн
printolog.ru — печать на шарах и текстиле в Москве. После апгрейда PHP фронт лежал. Отключил Caldera Forms: плагин не тянет PHP 8.2. Сайт поднялся, клиенту сказал не включать его снова и не трогать то, что работает, без бэкапа.
Результат
Сайт доступен после обновления PHP
Caldera Forms отключён как источник фатала
gewas-green.ru - каталог Woodmart и озеленение
На staging Woodmart собрал структуру каталога (кашпо, деревья, растения и др.), единое меню без раздельных вкладок МЕНЮ/КАТАЛОГ, блоки главной, rich-контент карточек, checkout с eShopLogistic и оплатой, служебные шаблоны, блог и портфолио. Отдельно — посадочная «Озеленение», SEO/ЧПУ, 301 со старого сайта и перенос на https://gewas-green.ru/.
Задача
Staging на Woodmart был с демо-контентом на английском и раздельными вкладками МЕНЮ/КАТАЛОГ. Нужен полноценный магазин: дерево категорий с ЧПУ, фильтры и SEO-теги, главная с баннерами и каруселями, карточка как мини-лендинг, checkout ФЛ/ЮЛ + eShopLogistic и СБП/СберПэй, служебные страницы, портфолио, блог, лендинг озеленения, перенос на gewas-green.ru с 301 и скоростью.
Решение
Единое выпадающее меню моб/ПК: кашпо, деревья, растения, цветы, композиции, озеленение, опт, B2B, проекты, блог и служебные — без раздельных вкладок МЕНЮ/КАТАЛОГ; на мобилке поиск под шапкой
Дерево категорий с ЧПУ (/kashpo/treez/, /derevya/ficus/ и т.д.), уникальные title/description, фильтры по размеру/виду/цвету/материалу, SEO-теги над листингом
Главная: баннеры ключевых разделов, карусели Новинки/Топ продаж, блок о компании с фото, промо, соцдоказательства, последние посты блога
Карточка: rich-контент на всю ширину, похожие товары, русификация UI, эталонные товары с мета и alt
Корзина без лишнего «Подытог», рекомендации аксессуаров; checkout: ФЛ/ЮЛ, доставка/ПВЗ через eShopLogistic, СБП/СберПэй/Т-Пэй и счёт для юрлиц
Лендинг /ozelenenie/: hero, этапы, кейсы, отзывы, FAQ, форма заявки
SEO-плагин, ЧПУ, перелинковка, перенос на https://gewas-green.ru/, 301 со старых URL, кэш/скорость, чистка плагинов, документ с рекомендациями
Главная: ключевые разделы
Вместо демо-ленты — баннеры по главным направлениям: искусственные растения, кашпо и озеленение. Дальше карусели новинок/топа, блок о компании, промо и соцдоказательства.
Меню без МЕНЮ / КАТАЛОГ
На мобилке убрал две вкладки: один список верхнего уровня (кашпо, деревья, растения, опт, B2B, проекты…). Поиск вынес под шапку, чтобы был сразу виден.
Каталог вместо демо Woodmart
В мегаменю убрал английские Furniture/Cars/Clocks и собрал реальные ветки кашпо (Treez, Lechuza, материалы), деревьев и растений с иконками в стиле темы.
О компании с лицом бренда
Было: стена текста без фото. По ТЗ пересобрал блок — фото команды/основателя + услуги, чтобы бренд читался как премиальный поставщик, а не сухой абзац.
Корзина и оформление
Упростил totals, подключил доставку (курьер / ПВЗ / ТК) и сценарий checkout: физлицо или юрлицо, способы оплаты и модуль eShopLogistic.
Топ продаж на главной
Карусель популярных кашпо TREEZ с бейджами скидок — один из двух блоков (Новинки / Топ продаж) по ТЗ для быстрых продаж с главной.
Результат
Woodmart-магазин собран под реальный каталог и SEO-структуру