сайт в бете
нашли баг? напишите
левин. записаться
← все статьи
Миграция 2026-09-28

Переезд с WordPress на Payload CMS: что происходит с контентом и ссылками

Разбираю по шагам, как контент WordPress раскладывается по коллекциям Payload, что делать с медиатекой и как сохранить адреса страниц. На примере реального переезда million-estate.com.

Л
Проект Левин
автор

Что происходит при переезде на самом деле

WordPress хранит всё в своей схеме: посты, страницы, кастомные поля, медиатека. Payload работает от обратного — сначала вы описываете коллекции в конфиге, и контент должен лечь в эту структуру. Кнопки «импортировать WordPress» здесь нет. Переезд распадается на три задачи: забрать контент, разложить его по коллекциям, сохранить адреса страниц.

Я собирал такой каркас для million-estate.com: Next.js 15 (App Router, TypeScript) со встроенным Payload CMS 3 на PostgreSQL 16. Сайт и админка — одно приложение, один контейнер, один деплой. Локализация RU/EN включена в конфиге, RU по умолчанию. Для дальнейшей работы это удобно, но контент всё равно переносится отдельным этапом.

Откуда забирать контент

Первый путь — доступ в админку WordPress. Тогда у вас есть экспорт, оригиналы из медиатеки и значения кастомных полей. Лучший сценарий, качество исходников максимальное.

Второй путь — парсинг публичного сайта. Работает, когда доступа нет. Тексты снимаются нормально. С картинками хуже: с фронтенда вы забираете уже сжатые шаблоном версии, оригиналы остаются на старом хостинге. Пережать такую картинку ещё раз — потерять качество второй раз.

Именно на этом у меня встал этап переноса контента: без доступа к WP-админке остаётся парсинг, и фото получаются слабее. Если затеваете переезд — запросите доступ заранее, до начала работ.

Как контент ложится в коллекции

Первым делом старый сайт разбирается по типам содержимого. Статьи, страницы, мероприятия, экспертизы, люди — каждый тип превращается в коллекцию Payload со своим набором полей. Мешанина из «страниц с шорткодами» в этот момент становится структурированными данными, и это главная выгода переезда.

Мелочи, которые всплывают на этом шаге:

  • шорткоды и блоки Gutenberg надо переводить в блоки Payload или в обычную разметку;
  • внутренние ссылки внутри текстов обычно абсолютные и ведут на старый домен — их надо переписывать;
  • галереи и вложения превращаются в связи с коллекцией media;
  • при включённой локализации сразу решите, что считается переводом, а что отдельной сущностью.

Медиа: пережать сразу

Перенос медиа — хороший момент, чтобы разом закрыть вопрос веса страниц. В моих критериях приёмки это отдельный пункт: медиа перенесены и пережаты в WebP/AVIF. Next.js умеет отдавать современные форматы сам, но исходники в библиотеке лучше держать уже нормального размера — тогда вы не платите за конвертацию на каждом запросе и не тащите в новый проект гигабайты старых JPEG.

Ссылки: структуру сохранить, изменённое закрыть 301

Это та часть, где переезд чаще всего ломает трафик. Правило простое: URL-структура сохраняется как есть. Всё, что изменилось, закрывается 301-редиректом со старого адреса на новый.

Что проверить отдельно:

  • адреса разделов и карточек — совпадают ли со старыми;
  • пагинация, теги, категории — у WordPress тут свои шаблоны URL;
  • адреса вложений и картинок, если они где-то проиндексированы;
  • завершающий слэш — на старом и новом сайте он должен вести себя одинаково.

Дальше служебные файлы. sitemap.xml, robots.txt и JSON-LD (Organization, Event, Article) собираются заново на стороне Next.js. robots на проекте выглядит так:

User-agent: *
Allow: /
Disallow: /cabinet/

Sitemap: https://million-estate.com/sitemap.xml

Закрытый кабинет — обязательный пункт: личные разделы в индексе никому не нужны.

Проверка руками после переключения

Автотесты сюда не дотягиваются, поэтому сайт проходится целиком. На million-estate.com обход дал 40 внутренних адресов на 15 страницах — все отвечают 200, битых нет. Отдельно проверяются якоря (#accreditation, #concierge, #upcoming, #past, #main): находят ли они свои цели. У внешних ссылок — target="_blank" и rel="nofollow noopener".

Интерактив проверяется тем же проходом: вкладки «Экспертизы» переключают панели, фильтры графика мероприятий отдают правильные выборки (7 предстоящих, 1 прошедшее), стрелки слайдеров листают, кнопки «Поделиться» подставляют адрес текущей страницы. После переезда именно это ломается тихо: вёрстка на месте, обработчик потерялся.

Чек-лист переезда

  • все страницы наполнены;
  • медиа перенесены и пережаты в WebP/AVIF;
  • URL-структура сохранена, на изменённое стоят 301;
  • sitemap.xml, robots.txt и JSON-LD на месте;
  • внутренние ссылки и якоря отвечают 200;
  • кабинет закрыт от индексации;
  • мобильная вёрстка проверена руками.

Переезд на Payload ближе к пересборке контента, чем к миграции базы. Времени уходит больше. На выходе получаете структурированные данные, предсказуемые адреса и одно приложение вместо сайта с отдельной админкой.

теги #миграция#wordpress#payload cms#контент#редиректы

один разговор — и поймём, чем я могу помочь.

В эпоху ИИ человеку нужен человек. Сяду рядом и доведу до результата — встреча длится столько, сколько нужно. Без скрипта продаж и пакетов «за 999 000 ₽». Если пойму, что помочь не смогу, — скажу сразу.