Миграция с WordPress на Headless CMS под ключ

Монолитный WordPress тормозит при 5000 публикациях? В админке каждый клик длится 3 секунды? Редакторы теряют терпение, а PHP-шаблоны не дают реализовать современный дизайн. Выход — headless-архитектура. Мы помогаем мигрировать сайты под ключ, сохраняя SEO-позиции и сокращая Time to Market. На фронте

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Миграция с WordPress на Headless CMS под ключ
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Монолитный WordPress тормозит при 5000 публикациях? В админке каждый клик длится 3 секунды? Редакторы теряют терпение, а PHP-шаблоны не дают реализовать современный дизайн. Выход — headless-архитектура. Мы помогаем мигрировать сайты под ключ, сохраняя SEO-позиции и сокращая Time to Market. На фронтенде используем Next.js или Nuxt — SSR/SSG, ленивая загрузка, оптимизация Core Web Vitals. Контент-менеджеры работают в удобном интерфейсе, а разработчики вольны выбирать стек.

Headless CMS Wikipedia отделяет управление контентом от представления. Миграция требует тщательного планирования: инвентаризации контента, маппинга типов записей, настройки API и периода параллельной работы.

Оценка до начала

Перед выбором целевой CMS проводим аудит: инвентаризируем кастомные типы записей, поля ACF, используемые плагины (WooCommerce, Events Calendar), уровень подготовки контент-команды, бюджет на лицензии и требования к черновикам и preview. На основе этих данных выбираем платформу: Strapi для self-hosted, Contentful для SaaS с мощным редактором, Sanity для гибкой схемы. После миграции затраты на хостинг и лицензии снижаются до 60% — средняя экономия составляет от 2000$ до 5000$ в год.

Как выбрать Headless CMS?

Сравним популярные платформы:

Критерий Contentful Sanity Strapi KeystoneJS
Хостинг SaaS SaaS/Self Self Self
Тариф Enterprise Стартовый Open Source Open Source
Редактор Хороший Отличный Базовый Базовый
API REST + GraphQL GROQ + GraphQL REST + GraphQL GraphQL
Медиа CDN включён CDN включён Своё хранилище Своё

Strapi превосходит KeystoneJS по размеру сообщества в 3 раза и по количеству готовых плагинов. GraphQL API позволяет выбирать только нужные поля, сокращая объём передаваемых данных в 2-3 раза по сравнению с REST. Стоимость лицензий headless CMS в среднем в 2-3 раза ниже, чем у корпоративных решений. На Next.js с headless CMS LCP в 2-3 раза ниже, чем на классическом WordPress, что подтверждают замеры Core Web Vitals.

Этап 1: Аудит и маппинг контента (1–2 недели)

Инвентаризация существующего контента:

# Экспорт из WordPress через WP-CLI wp export --post_type=post,page,product --status=publish --path=/var/www/html # Анализ ACF-полей wp acf field-group export --group_id=all --output=json > acf-fields.json # Статистика по типам wp post list --post_type=post --format=count wp post list --post_type=page --format=count 

Маппинг WordPress → целевая CMS:

# mapping.yaml wordpress_types: post: target: blogPost fields: post_title: title post_content: body (RichText) post_excerpt: excerpt post_date: publishedAt _thumbnail_id: featuredImage (Asset) categories: categories (Reference[]) tags: tags (Reference[]) acf.seo_title: seoTitle acf.seo_description: seoDescription product: target: product fields: post_title: name _regular_price: price (Number) _stock_qty: stock (Number) product_cat: categories acf.gallery: gallery (Asset[]) 

Как перенести контент без потерь?

Для этого пишем скрипты на TypeScript. Они через WP REST API получают записи, медиа и связи, а затем отправляют их в новую CMS через Management API. Код обрабатывает rate limiting, преобразует HTML в Markdown и загружает изображения.

// scripts/migrate-from-wp.ts import axios from 'axios'; import * as contentful from 'contentful-management'; import TurndownService from 'turndown'; const turndown = new TurndownService({ headingStyle: 'atx' }); const cmaClient = contentful.createClient({ accessToken: process.env.CMA_TOKEN! }); async function migratePosts() { const space = await cmaClient.getSpace(process.env.SPACE_ID!); const env = await space.getEnvironment('master'); let page = 1; while (true) { const { data: posts } = await axios.get( `${WP_URL}/wp-json/wp/v2/posts?per_page=100&page=${page}&_embed` ); if (!posts.length) break; for (const wpPost of posts) { await migratePost(env, wpPost); await delay(200); } page++; } } async function migratePost(env: any, wpPost: any) { const featuredImageUrl = wpPost._embedded?.['wp:featuredmedia']?.[0]?.source_url; let imageAsset; if (featuredImageUrl) { imageAsset = await uploadAsset(env, featuredImageUrl, wpPost.title.rendered); } const entry = await env.createEntry('blogPost', { fields: { title: { 'en-US': wpPost.title.rendered }, slug: { 'en-US': wpPost.slug }, body: { 'en-US': turndown.turndown(wpPost.content.rendered) }, excerpt: { 'en-US': wpPost.excerpt.rendered.replace(/<[^>]*>/g, '') }, publishedAt: { 'en-US': wpPost.date }, ...(imageAsset && { featuredImage: { 'en-US': { sys: { type: 'Link', linkType: 'Asset', id: imageAsset.sys.id } } }, }), }, }); await entry.publish(); console.log(`Migrated: ${wpPost.title.rendered}`); } 

Этап 2: Настройка новой CMS (1 неделя)

Создание Content Types в целевой CMS точно по маппингу. Настройка валидаций, локализации, ролей. Этот этап делаем параллельно с аудитом.

Этап 3: Скрипт миграции (1–2 недели)

Код выше — пример для Contentful. Аналогичные скрипты пишем для Strapi через его REST API или для Sanity через mutation API.

Этап 4: Миграция медиафайлов

// Скачиваем и загружаем все медиафайлы WP async function migrateMedia() { const { data: media } = await axios.get(`${WP_URL}/wp-json/wp/v2/media?per_page=100`); for (const item of media) { const asset = await env.createAsset({ fields: { title: { 'en-US': item.title.rendered }, description: { 'en-US': item.alt_text }, file: { 'en-US': { contentType: item.mime_type, fileName: path.basename(item.source_url), upload: item.source_url, }}, }, }); await asset.processForAllLocales(); await asset.publish(); mediaIdMap[item.id] = asset.sys.id; } } 

Этап 5: Параллельный запуск и переключение

  1. Запустить новый фронтенд на staging с реальными данными.
  2. Провести редизайн-ревью с контент-командой.
  3. Настроить автоматическую синхронизацию WordPress → новая CMS на период перехода.
  4. DNS-переключение в low-traffic период.
  5. Отключить WordPress через 2–4 недели после стабилизации.

Сроки типовой миграции

Этап Небольшой сайт (<500 записей) Средний (500–5000) Крупный (5000+)
Аудит и маппинг 1 неделя 1–2 недели 2–4 недели
Настройка CMS 3–5 дней 1 неделя 1–2 недели
Скрипт миграции 1 неделя 1–2 недели 2–4 недели
Тестирование 3–5 дней 1 неделя 2 недели
Запуск 1 день 1–2 дня 1 неделя
Итого 4–6 недель 6–10 недель 3–5 месяцев
Типичные ошибки при миграции
  • Простой сайта из-за отсутствия параллельной работы.
  • Потеря связей между записями из-за некорректного маппинга.
  • Падение производительности из-за неоптимизированных GraphQL-запросов.
  • Некорректная обработка медиафайлов (дубликаты, потеря alt-тегов).

Все эти риски мы закрываем на этапе тестирования.

Что входит в работу?

  • Аудит текущей архитектуры и маппинг контента.
  • Настройка целевой CMS (Content Types, роли, локализация).
  • Скрипты миграции контента и медиа.
  • Настройка автоматической синхронизации на переходный период.
  • Разработка фронтенда на Next.js/Nuxt с учётом Core Web Vitals.
  • DNS-переключение и пост-миграционная поддержка.
  • Документация и обучение контент-команды.

Гарантируем сохранение SEO-позиций при условии выполнения наших рекомендаций. Оценим ваш проект за 2 дня. Свяжитесь с нами для предварительного аудита. Получите консультацию — мы подберём оптимальную архитектуру и сроки.