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 и подписи пробега по ТЗ.

Мобилка: телефон площадки

В шапке карточки кликабельный телефон площадки, на которой стоит авто. Кнопка «Позвоните мне» внизу — звонок без лишних шагов.

Результат

  • Первый экран ведёт в подборки по бюджету
  • Карточка читаемее: цена, объём, пробег, плашки, CTA
  • Мобильный звонок на номер площадки авто
  • Фид быстрее отражает продажу и смену цены

autodontech.ru - раздел Работы и запись

Из одностраничного лендинга автосервиса 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 в настройках магазина.

Решение

  • Разобрал цепочку: форма → WordPress → почта хостинга → ящик клиента
  • Отключил лишний почтовый плагин, оставил стандартный wp_mail
  • Настроил почту на домене и перенаправление на складской ящик клиента
  • Проверил тестовой заявкой; объяснил клиенту, где смотреть адрес получателя
  • Повторно: нашёл в настройках магазина чужой email уведомлений, вернул складской ящик клиента

Заявки снова доходят

ursaopt.ru — опт стройматериалов в Стерлитамаке. После редизайна письма не уходили: кривой SMTP от прошлого исполнителя. Настроил отправку с домена и переадресацию на складской ящик, лишний плагин отключил. Позже снова починил получателя уведомлений WooCommerce — там оказался чужой email.

Результат

  • Формы и уведомления о заказах снова на нужную почту
  • Повторный сбой закрыт правкой адреса получателя