vseunas.com - восстановление WordPress после угона DNS
На vseunas.com WordPress уходил на survey-smiles.com из-за подмены NS. Хостинг SpaceWeb был цел. Вернул доступ через vseunas.org (siteurl и home, сброс пароля админа), отделил шум антивируса от реальной причины и довёл сайт до рабочего состояния на .com.
Задача
Клиент думал, что сайт «завирусили»: антивирус SpaceWeb ругался на старые копии, .com уводил на чужой домен, админка и страницы не открывались. Нужно было найти реальную причину, вернуть доступ к WordPress и подготовить переезд на .com после возврата делегирования.
Решение
Диагностика FTP, public_html и отчёта антивируса: отделил CVE и шум от реального malware на старой копии old_vseunas_com
Скан текущего сайта на бэкдоры и вебшеллы: в актуальном public_html классических вирусов не было
Разбор дампа БД: редирект-инжектов нет, причина не в options и постах
DNS и HTTP: .org на SpaceWeb, .com на чужих NS redmonddc с редиректом на survey-smiles.com
Возврат доступа: siteurl и home на https://vseunas.org, сброс пароля админа, вход в wp-admin
Проверка главной, каталога, карточек, контактов. Перенос на vseunas.com после возврата NS и SSL
Сайт снова на основном домене
vseunas.com — завод лакокрасочных материалов «ВСЕ У НАС» (Екатеринбург). После диагностики и возврата делегирования главная, меню и каталог открываются на своём домене, без ухода на сторонние сайты.
Каталог ЛКМ
Раздел каталога с категориями красок, грунтовок и декоративных покрытий на месте. Задача была вернуть доступ и не сломать витрину при фиксации URL и DNS.
Карточка товара
Страницы товаров с описанием, фасовкой и PDF открываются. Проверил, что после смены siteurl и home витрина не развалилась.
Контакты и карта
Страница контактов с телефоном, почтой и картой доступна. Формы и ссылки не уводят на угнанный контур.
Портфолио объектов
Контентные разделы вроде портфолио объектов сохранились. Чистил причину недоступности в DNS и настройках URL, не ломая нормальный контент.
Результат
Доступ к WordPress и публичным страницам восстановлен
Причина — угон DNS .com, хостинг и файлы сайта целы
vseunas.com снова открывает каталог, товары и контакты
arendadecora.ru - аренда фотозон и декора
На сайте студии АрендаДекора (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
tehnologiishuma.ru - удаление вирусов WordPress
На tehnologiishuma.ru WordPress + WooCommerce снова поднимал скрытых админов и сторонние скрипты после отката бэкапа. Нашёл бэкдоры в плагинах и теме, почистил базу и оставил одного легитимного администратора.
Задача
Клиент откатывал бэкап, но сайт снова ломался: появлялись скрытые администраторы (в списке один admin, а счётчик — несколько), вредоносные плагины и код, который тянул сторонние скрипты. Нужна была не «переустановка из бэкапа», а зачистка файлов и базы — вирус уже сидел в копии.
Решение
Диагностика: плагины, тема Zakra, база пользователей и Code Snippets
Удаление malware-плагинов и бэкдоров (в т.ч. скрытых из списка плагинов и WP File Manager)
Очистка вредоносного кода в functions.php темы — создание скрытых админов и подключение внешних скриптов
Чистка базы: лишние администраторы, вирусные сниппеты, следы в options
Проверка: остался один легитимный admin, сайт и каталог открываются
Смена паролей и рекомендации по обновлениям и опасным плагинам
Сайт после зачистки
tehnologiishuma.ru — звукоизоляция и акустические материалы (WordPress + WooCommerce). После удаления вирусов главная, меню, каталог и карточки товаров снова открываются без бэкдоров и скрытых админов.
Каталог материалов
Раздел материалов и категории WooCommerce на месте: панели, плиты, мембраны, акустика. Задача была сохранить магазин и контент, убрав только вредоносный слой.
Товары и корзина
Категории и карточки товаров с ценой и кнопкой «В корзину» работают. Проверил, что после чистки витрина не развалилась и WooCommerce отвечает.
Карточка товара
Страница товара с галереей, ценой и описанием — без следов бэкдора в интерфейсе. Магазин оставлен в рабочем виде, без «пересборки под ключ».
Контентные разделы
Страницы вроде «Наши работы» и остальной контент сайта сохранились. Чистил заражение в файлах и базе, не трогая нормальный контент и каталог.
Результат
Вредоносные плагины и код в теме удалены
В базе только легитимный администратор
Сайт, каталог и карточки товаров открываются
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.
Результат
Формы и уведомления о заказах снова на нужную почту