Ушёл от WordPress? Хочешь на свой движок? Перенос — реально сделать самому за несколько часов. Разберём по шагам.
Что нужно перенести
- Статьи блога — заголовок, slug, текст, дата, категории, теги
- Страницы — «О нас», «Контакты», «Политика»
- Картинки — все изображения из папки /wp-content/uploads/
- Меню и настройки
- Комментарии — если нужны
Не переносим: плагины WP, их настройки, темы, метаданные виджетов.
Шаг 1. Экспорт статей из WordPress
Три способа:
Способ A: Встроенный экспорт
- Админка WP → Инструменты → Экспорт
- Выбрать «Всё» или «Записи»
- Скачать XML-файл
Дальше XML нужно распарсить — не самый удобный вариант.
Способ B: Плагин WP All Export
Экспорт в CSV или Excel — удобнее. Можно выбрать нужные поля. Есть бесплатная версия.
Способ C: Через базу данных
Прямой SQL-запрос к таблице wp_posts:
SELECT ID, post_title, post_name, post_content, post_date, post_status FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC;
Плюс второй запрос для категорий и третий для тегов.
Шаг 2. Скачать картинки
Все изображения лежат в /wp-content/uploads/. Разбиты по месяцам:
/uploads/2026/09/kartinka.jpg
Скачай всю папку целиком по FTP.
Шаг 3. Подготовить данные
Из XML/CSV/SQL нужно извлечь:
- Заголовок (title)
- Slug (URL)
- Содержимое (content)
- Дата публикации
- Категория (одна основная)
- Теги (несколько)
Сохранить в JSON или CSV для импорта в новый движок.
Шаг 4. Конвертация HTML
WordPress использует Gutenberg-блоки. Их HTML-разметка может содержать:
<!-- wp:paragraph -->и подобные комментарии- Шорткоды вида
[gallery],[contact-form-7] - Inline-стили от темы
Всё это нужно:
- Убрать шорткоды (они не работают вне WP)
- Убрать комментарии-блоки
- Оставить чистый HTML:
<p>,<h2>,<ul>,<img>,<a>
Простой скрипт на PHP:
$clean = preg_replace('/<!--.*?-->/s', '', $content);
$clean = preg_replace('/\[\/?[a-z_]+[^\]]*\]/', '', $clean);
Шаг 5. Импорт в новую CMS
Если CMS поддерживает импорт из CSV/JSON — используй встроенный инструмент.
Если нет — пишем скрипт-импортёр:
$pdo->beginTransaction();
foreach ($posts as $post) {
$data = [
'content' => $post['content'],
'excerpt' => mb_substr(strip_tags($post['content']), 0, 200),
];
$stmt = $pdo->prepare("
INSERT INTO content_items
(type_id, slug, title, status, published_at, data)
VALUES (?, ?, ?, 'published', ?, ?)
");
$stmt->execute([
$postTypeId,
$post['slug'],
$post['title'],
$post['date'],
json_encode($data, JSON_UNESCAPED_UNICODE),
]);
$itemId = (int)$pdo->lastInsertId();
// Привязка категории
if ($catId) {
$pdo->prepare("INSERT INTO content_item_terms (item_id, term_id) VALUES (?, ?)")
->execute([$itemId, $catId]);
}
}
$pdo->commit();
Шаг 6. Перенос картинок
Два варианта:
A. Оставить старые URL
Если WP-сайт остаётся на поддомене (old.site.ru) — ссылки на картинки работают. Но это временное решение.
B. Заменить пути в контенте
В базе найти /wp-content/uploads/ и заменить на /assets/images/blog/ (или свой путь). Плюс физически перенести файлы.
$content = str_replace('/wp-content/uploads/', '/assets/images/blog/', $content);
Шаг 7. Настроить 301-редиректы
Все старые URL должны вести на новые. Иначе потеряешь весь SEO-вес.
В .htaccess:
RewriteRule ^wp-content/uploads/(.*)$ /assets/images/blog/$1 [R=301,L] RewriteRule ^blog/([^/]+)/$ /blog/$1/ [R=301,L]
Если структура URL совпадает — редиректы не нужны. Если меняется — обязательны.
Шаг 8. Проверка
- ☐ Все статьи на месте
- ☐ Slug сохранены (важно для SEO)
- ☐ Картинки загружаются
- ☐ Категории и теги работают
- ☐ 301-редиректы срабатывают (проверить
curl -I old-url) - ☐ Sitemap обновлён
- ☐ Яндекс.Вебмастер и Search Console уведомлены о переезде
Сколько времени займёт
- 10-20 статей: 2-4 часа
- 50-100 статей: 1-2 дня
- 500+ статей: неделя работы
Основное время — конвертация HTML и проверка каждой статьи. Скрипт импортирует всё за 5 минут, но контент требует внимания.
Что важно не потерять
- Slug — URL статей. Если изменится — потеряешь позиции
- Дата публикации — влияет на «свежесть» в поиске
- 301-редиректы — если URL изменились
- Внутренние ссылки — между статьями
Всё остальное можно конвертировать или отбросить.
Если новый движок — Kuznya CMS, типы контента создаются в админке за 5 минут, и в них импортируются статьи через скрипт-импортёр. Никаких плагинов, никаких сторонних библиотек.