
🪓 Как разделить большие XML-файлы при импорте в WordPress
Экспортировали сайт, а файл весит 30 мегабайт и не лезет на новый хост? Стандартный импорт WordPress молча обрывается на полпути, и часть контента просто теряется. Знакомая картина для тех, кто переезжает со старого сайта с сотнями постов.
Причина, жёсткие лимиты хостинга: upload_max_filesize (обычно 2-8 МБ), post_max_size и таймаут скрипта в 30 секунд. WXR-файл (WordPress eXtended RSS) с многолетним контентом легко переваливает за эти границы.
Вот четыре работающих способа разделить большой XML на части и импортировать всё без потерь. От самого простого к продвинутому.
💡 Быстрый обзор:
- Поднимите лимит загрузки через поддержку хостинга, это самый быстрый путь, если провайдер идёт навстречу.
- Нужен офлайн-инструмент под конкретную ОС, пробуйте десктопные WXR File Splitter (Windows) или WXR Split (Mac).
- Кроссплатформенный вариант без установки, онлайн-сплиттер WXR разбивает файл прямо в браузере.
- Работаете через командную строку, WP-CLI
wp importпринимает несколько файлов и не упирается в веб-лимиты.
Почему импорт обрывается: три лимита, которые мешают
WordPress при импорте упирается не в один, а сразу в три барьера.
upload_max_filesize, максимальный размер одного загружаемого файла. На дешёвом хостинге это 2 МБ, на среднем, 8-32 МБ.post_max_size, общий размер POST-запроса. Должен быть больше upload_max_filesize, иначе файл не дойдёт до обработчика.max_execution_time, время выполнения скрипта. Если импорт длится дольше 30-60 секунд, процесс обрывается, даже если файл загрузился.
Экспорт со старого сайта, где 500 записей и тысячи комментариев, легко даёт XML на 15-25 МБ. Такой файл в стандартный лимит не влезает.
Способ 1: Попросить хостера поднять лимиты
Самый простой путь, написать в поддержку хостинга. Большинство провайдеров поднимают upload_max_filesize до 64-128 МБ по запросу, особенно на тарифах выше базового.
Если доступ к настройкам сервера есть у вас, добавьте в wp-config.php:
1 define('WP_MEMORY_LIMIT', '256M');
И создайте файл .user.ini в корне сайта (для хостингов с PHP-FPM):
1 upload_max_filesize = 128M 2 post_max_size = 128M 3 max_execution_time = 300
На shared-хостингах .user.ini работает не всегда, тогда только через тикет в поддержку.
После изменения лимитов загрузите исходный WXR-файл через Инструменты → Импорт → WordPress. Если файл всё ещё не проходит, переходите к разделению.
Способ 2: WXR File Splitter для Windows
Для Windows есть классическая десктопная утилита WXR File Splitter. Интерфейс у неё аскетичный, но задачу решает: открываете WXR-файл, указываете количество частей или максимальный размер каждой, нажимаете «Split Files», и получаете несколько XML-файлов в той же папке.

Утилита показывает количество элементов в файле до разбивки, постов, страниц, комментариев. Это помогает прикинуть, на сколько частей делить.
Обратите внимание: инструмент старый, оригинальный сайт разработчика больше не работает. Если утилита не запускается на Windows 10/11, сразу переходите к способу 4 (онлайн-сплиттер), он надёжнее.
Способ 3: WXR Split для Mac
Владельцам Mac доступен аналог, WXR Split. Логика та же: загружаете XML, задаёте размер частей, получаете набор файлов для последовательного импорта.

Как и в случае с Windows-версией, официальный сайт инструмента может быть недоступен. Не тратьте время на поиски, веб-сплиттер из следующего шага работает на любой ОС.
Способ 4: Онлайн-сплиттер wxrfilesplitter.com
Самый практичный вариант на сегодня, бесплатный веб-инструмент WXR File Splitter. Работает в браузере, не требует установки, не привязан к операционной системе.
Как разделить файл:
- Откройте wxrfilesplitter.com.
- Загрузите WXR-файл, ограничение по размеру 256 МБ, чего с запасом хватает для любого сайта.
- Укажите желаемый размер частей, разработчик рекомендует 2 МБ для стабильного импорта.
- Нажмите Submit и скачайте архив с разделёнными XML-файлами.
Инструмент не хранит файлы на сервере, временные данные чистятся ежечасно. После разбивки импортируйте каждый файл через стандартный Инструменты → Импорт → WordPress один за другим.
Главный плюс: вам не нужно искать утилиту под свою ОС или разбираться с командной строкой. Всё в браузере за пару кликов.
Способ 5: WP-CLI import (для тех, кто работает через консоль)
Если у вас есть SSH-доступ к серверу и установлен WP-CLI, импорт можно сделать без всякого разделения, или с разбивкой для скорости.
WP-CLI принимает сразу несколько файлов:
1 wp import file1.xml file2.xml file3.xml --authors=create
Флаг --authors=create создаёт учётные записи авторов, если их нет на новом сайте.
У этого метода два преимущества: во-первых, WP-CLI работает через командную строку и не ограничен веб-лимитами PHP; во-вторых, можно передать директорию с разделёнными частями одной командой.
Чтобы включить детальное логирование при импорте, добавьте в wp-config.php:
1 define('IMPORT_DEBUG', true);
Тогда WP-CLI выведет подробный отчёт по каждому обработанному элементу, видно, что импортировалось, а что пропущено.
⁉️🤔 Частые вопросы
Файл 40 МБ, ни один способ не помогает, что делать?
Скорее всего, проблема не в размере, а в таймауте. Даже разделённый на части по 2 МБ файл может зависнуть, если сервер не справляется с обработкой каждой части за 30 секунд. Попросите хостера увеличить
max_execution_timeдо 300. Или используйте WP-CLI, он не зависит от веб-таймаутов.
Можно ли просто разбить XML в текстовом редакторе?
Технически да, но практически нет. У WXR-файла сложная структура с namespace-ами и повторяющимися тегами
<item>, каждый из которых содержит полный пост с мета-данными. Ручная нарезка почти гарантированно сломает XML, импортёр WordPress выдаст ошибку парсинга. Пользуйтесь специализированными инструментами.
Обязательно ли разбивать файл, если я переезжаю на нормальный VPS?
На VPS лимиты настраиваете вы сами, поднимите
upload_max_filesizeиpost_max_sizeдо 128 МБ, и файл загрузится целиком. Но с таймаутом осторожнее: даже на мощном сервере импорт 500 записей с медиафайлами может занять 2-3 минуты. Увеличьтеmax_execution_timeили всё же разделите файл для страховки.
Что делать, если часть контента не импортировалась после разбивки?
Проверьте, что импортировали ВСЕ полученные файлы. Распространённая ошибка: скачали архив из wxrfilesplitter.com, загрузили первый файл и остановились. Каждый файл содержит свою порцию элементов, пропуск любой части означает потерю этих записей. Импортируйте последовательно, дожидаясь завершения каждого.
А что насчёт плагинов импорта, например WP All Import?
WP All Import умеет читать большие XML и импортировать их по частям (chunking), но он заточен под импорт данных в произвольные типы записей и поля ACF, а НЕ под импорт стандартного WXR с постами/страницами/комментариями как они есть. Для задачи «перевезти сайт целиком» берите описанные выше инструменты.
Итоги: чем разбить XML под вашу задачу
Универсального инструмента нет, выбор зависит от того, какой доступ у вас к серверу и насколько велик файл.
- Если можете написать в поддержку хостинга, начните с поднятия лимитов. Это 5 минут и часто решает проблему без всякой разбивки.
- Файл до 256 МБ, нет консольного доступа, веб-сплиттер WXR решит задачу в браузере за пару кликов.
- Есть SSH и WP-CLI,
wp importс директорией разделённых файлов, самый надёжный и быстрый способ. - Олдскульные десктопные утилиты (WXR File Splitter / WXR Split) держите как запасной вариант, они работают на старых системах, но сайты разработчиков уже недоступны.
Разделили XML и успешно импортировали сайт? Расскажите в комментариях, какой способ сработал у вас, и сталкивались ли с тем, что часть контента терялась при импорте.



