Если у вас в LearnPress уже собрана большая база курсов, переносить их вручную через админку неудобно и рискованно: легко потерять уроки, вложения, настройки доступа или часть метаданных. Для такой задачи нужен не «копипаст» контента, а понятный способ экспорта и импорта данных курса между сайтами WordPress или для резервного обмена между средами.
У LearnPress нет универсального встроенного механизма, который одинаково хорошо переносит весь учебный контент во всех конфигурациях. На практике используют два рабочих сценария: перенос через экспорт/импорт WordPress с дополнительной проверкой связанных данных и миграцию на уровне базы данных и файлов, если нужно сохранить структуру курсов максимально точно. Выбор зависит от того, что именно вы переносите: только сами курсы или ещё и уроки, викторины, задания, медиафайлы и настройки плагина.
Что реально можно перенести без ручного копирования
В LearnPress курс обычно состоит не из одного объекта, а из набора связанных сущностей. Поэтому при переносе важно понимать, что именно должно уехать вместе с курсом:
- сам курс как отдельная запись WordPress;
- уроки, викторины и другие связанные элементы;
- структура курса, порядок уроков и секций;
- изображения, вложения и файлы, которые используются в уроках;
- метаданные курса: цена, режим доступа, длительность, настройки прохождения;
- данные о преподавателях и связанных таксономиях, если они используются на сайте;
- записи о зачислениях и прогрессе студентов, если вы переносите не только контент, но и учебную историю.
На новом сайте обычно переносят именно контент и настройки курса. Прогресс студентов, зачисления и статистику переносят только тогда, когда это действительно нужно, потому что такие данные сильнее завязаны на конкретный сайт и его пользователей.
Самый безопасный способ: сначала сделать резервную копию
Перед любым импортом или экспортом сделайте полную резервную копию базы данных и папки wp-content/uploads. Это не формальность: при переносе курсов часто всплывают несовпадения версий LearnPress, темы, дополнительных аддонов и структуры медиафайлов. Если что-то пойдет не так, откат сэкономит часы ручного исправления.
Если вы работаете на хостинге с панелью управления, обычно достаточно штатного бэкапа базы и файлов. Если есть доступ к SSH и вы понимаете, что делаете, можно использовать WP-CLI для выгрузки базы, но это уже отдельный рабочий процесс и он не нужен для самой задачи переноса курсов.
Как экспортировать курсы LearnPress
Для небольшого или среднего объема контента удобнее начинать со стандартного экспорта WordPress. Он подходит, если вам нужно перенести записи курсов и связанные типы записей, которые видит WordPress. В админке откройте Инструменты → Экспорт и выберите нужные типы контента, если они доступны в списке.
На практике здесь есть важное ограничение: стандартный экспорт WordPress не всегда переносит все связи LearnPress так, как вы ожидаете. Сам курс может экспортироваться, но часть связанной структуры — например, внутренние связи между курсом, уроками и викторинами — после импорта может потребовать проверки. Поэтому такой способ годится для переноса контента между сайтами с похожей конфигурацией, но не как «магическая кнопка» для любого случая.
Если в вашей установке LearnPress или в дополнительных аддонах есть собственные инструменты экспорта, используйте их в первую очередь. Они обычно лучше сохраняют внутренние связи курса, чем общий экспорт WordPress. Но перед этим проверьте, что версия плагина на обоих сайтах совпадает или хотя бы совместима: экспорт из одной версии и импорт в сильно отличающуюся версию — частая причина поломки структуры.
Что проверить перед экспортом
- одинаковая или совместимая версия LearnPress на обоих сайтах;
- наличие тех же аддонов, если курс использует их функции;
- доступность медиафайлов, которые встроены в уроки;
- нет ли в контенте ссылок на старый домен, если переносите сайт целиком;
- достаточно ли памяти и времени выполнения PHP для большого архива курсов.
Как импортировать курсы на новый сайт
Импорт выполняют после того, как на новом сайте установлен WordPress, активирован LearnPress и добавлены те же расширения, которые использовались на исходном сайте. Это критично: если импортировать курс без нужного аддона, часть настроек может просто не распознаться.
Дальше откройте Инструменты → Импорт и загрузите файл экспорта. После импорта не спешите сразу отдавать курс в работу. Сначала проверьте, что:
- курс появился в списке курсов;
- уроки и викторины на месте;
- порядок блоков внутри курса не сбился;
- изображения и вложения открываются;
- ссылки внутри уроков ведут на новый домен, если это нужно;
- настройки доступа и публикации сохранились корректно.
Если после импорта курс отображается, но внутри пустые уроки или сломана структура, значит стандартного экспорта было недостаточно. В таком случае лучше перейти к более точному переносу на уровне базы данных и файлов или повторить миграцию с использованием штатного инструмента LearnPress, если он есть в вашей версии.
Когда стандартного импорта недостаточно
Есть несколько типичных ситуаций, когда обычный экспорт WordPress не закрывает задачу:
- у вас десятки или сотни курсов с вложенной структурой;
- нужно перенести не только контент, но и прогресс студентов;
- курс использует дополнительные поля и аддоны LearnPress;
- на старом и новом сайте разные версии плагина;
- нужно сделать регулярный обмен данными между staging и production.
В таких случаях чаще используют миграцию сайта целиком или частично: база данных плюс папка uploads, а затем уже точечная проверка LearnPress. Это не всегда означает полный перенос всего сайта, но почти всегда требует аккуратной работы с данными, потому что LearnPress хранит часть информации в связях между записями и метаданными.
Если вы переносите только курсы, а не весь сайт, убедитесь, что на новом домене совпадают префикс таблиц WordPress и структура пользователей, если в курсах есть привязка к авторам или преподавателям. Иначе после импорта часть связей придется восстанавливать вручную.
Как не потерять структуру курса при массовом переносе
При большом количестве курсов главная ошибка — переносить их как обычные записи и надеяться, что все связи восстановятся автоматически. Чтобы этого не произошло, держите в голове простое правило: сначала переносится сам контент, затем проверяются связи, и только после этого сайт считается готовым.
Практически это выглядит так:
- Сделайте резервную копию исходного сайта.
- Подготовьте новый сайт с той же версией WordPress и LearnPress.
- Установите нужные аддоны до импорта.
- Выполните экспорт курсов и связанных сущностей.
- Импортируйте данные на новый сайт.
- Проверьте один курс полностью: от карточки до последнего урока.
- Только после этого переносите остальную базу.
Такой порядок особенно полезен, если вы переносите курсы партиями. Один тестовый курс быстро покажет, хватает ли выбранного способа или нужно менять схему миграции.
Как проверить, что импорт прошел нормально
После переноса откройте несколько курсов из разных категорий и проверьте не только видимую часть, но и внутреннюю структуру. Лучше смотреть на один простой курс и один сложный, где есть уроки, викторины и дополнительные настройки.
Проверка обычно включает такие шаги:
- курс открывается без ошибок на фронтенде;
- уроки доступны в правильном порядке;
- викторины запускаются и сохраняют результат;
- кнопки записи на курс или покупки работают как раньше;
- изображения и файлы загружаются с нового сайта;
- внутренние ссылки не ведут на старый домен;
- в админке курс редактируется без предупреждений о битых данных.
Если перенос делался между разными доменами, отдельно проверьте абсолютные ссылки в тексте уроков и в медиафайлах. Именно они чаще всего остаются на старом адресе, даже если сам курс импортировался без ошибок.
Что делать, если нужен регулярный обмен данными
Когда курсы нужно не просто один раз перенести, а регулярно синхронизировать между сайтами, ручной экспорт через админку быстро становится неудобным. В такой схеме лучше заранее определить, какой сайт является источником данных, а какой — приемником, и не смешивать роли. Иначе легко получить дубли курсов, расхождение в версиях и потерю актуальности материалов.
Для регулярного обмена обычно выбирают один из двух подходов: либо повторяемый экспорт/импорт с четким регламентом, либо миграцию на уровне базы и файлов с последующей автоматизацией на стороне хостинга или деплой-процесса. Какой вариант выбрать, зависит от масштаба базы и от того, насколько часто меняются курсы. Если обновления редкие, достаточно штатного экспорта. Если курсы обновляются постоянно, лучше строить процесс как управляемую синхронизацию, а не как разовые ручные действия.
Для владельца сайта практический вывод простой: если у вас несколько десятков курсов и перенос нужен время от времени, начинайте со штатного экспорта WordPress и проверки структуры. Если курсов много, они сложные и содержат связанный учебный контент, сразу планируйте миграцию с учетом базы данных, файлов и совместимости версий. Это надежнее, чем пытаться восстановить все вручную после неудачного импорта.