Когда вы управляете обучающей платформой на базе LearnPress, со временем количество курсов растёт, и среди них появляются неактивные или устаревшие курсы, которые уже не нужны студентам. Однако простое удаление курса через админку WordPress может привести к потере важных данных, таких как отчёты об успеваемости или отзывы. В этой статье мы подробно разберём, как безопасно удалить неиспользуемые курсы в LearnPress, сохранив ключевые данные и не нарушив работу сайта.
Почему важно правильно удалять курсы в LearnPress
LearnPress хранит данные о курсах и пользователях в нескольких таблицах базы данных, а также использует метаданные и связи с другими сущностями — уроками, квизами, заказами и оценками. Простое удаление курса через административную панель WordPress удалит, как правило, только запись поста, но не всегда корректно очистит связанные данные или уведомит связанные плагины и функционал.
Если удалять курсы без должной подготовки, можно столкнуться с:
- «битым» функционалом на страницах курсов и уроков;
- утратой статистики и отзывов, которые могут быть полезны для анализа;
- ошибками в отчётах пользователей и заказах;
- проблемами с производительностью из-за накопления мусорных данных.
Поэтому для удаления курсов нужно использовать комплексный подход, который включает проверку связей и корректное удаление данных.
Как определить неиспользуемые курсы в LearnPress
Прежде чем удалять курсы, нужно точно выяснить, какие из них неактивны и не имеют учеников. Для этого используйте следующие методы:
- Фильтрация курсов в админке LearnPress по количеству зарегистрированных студентов — если их нет, курс можно рассматривать как кандидат на удаление.
- Проверка активности курса — дата последнего обновления, последние действия пользователей.
- Использование SQL-запроса для поиска курсов без связанных уроков или заказов.
Пример SQL-запроса, который поможет найти курсы без студентов:
SELECT p.ID, p.post_title FROM wp_posts p
LEFT JOIN wp_learnpress_user_items ui ON p.ID = ui.item_id
WHERE p.post_type = 'lp_course' AND ui.user_id IS NULL;
Этот запрос вернёт список курсов без зарегистрированных пользователей.
Безопасное удаление курса с помощью кода
Для удаления курса можно написать кастомную функцию, которая сначала проверит наличие связанных данных, удалит уроки и квизы курса, затем сам курс, и в конце очистит метаданные. Ниже пример функции с префиксом learnpressru_:
function learnpressru_delete_course_safely( $course_id ) {
if ( ! $course_id ) {
return false;
}
// Проверяем количество студентов
$students = get_posts(array(
'post_type' => 'lp_user_item',
'meta_query' => array(
array('key' => '_lp_course_id', 'value' => $course_id)
),
'posts_per_page' => 1
));
if ( ! empty( $students ) ) {
return new WP_Error('course_has_students', 'Невозможно удалить курс с активными студентами');
}
// Удаляем уроки
$lessons = get_posts(array(
'post_type' => 'lp_lesson',
'meta_key' => '_lp_course',
'meta_value' => $course_id,
'posts_per_page' => -1
));
foreach ($lessons as $lesson) {
wp_delete_post($lesson->ID, true);
}
// Удаляем квизы
$quizzes = get_posts(array(
'post_type' => 'lp_quiz',
'meta_key' => '_lp_course',
'meta_value' => $course_id,
'posts_per_page' => -1
));
foreach ($quizzes as $quiz) {
wp_delete_post($quiz->ID, true);
}
// Удаляем сам курс
wp_delete_post($course_id, true);
return true;
}
Эту функцию можно вызвать, передав ID курса. Она сначала проверит наличие студентов, и если их нет, удалит все связанные уроки и квизы, а потом и курс. Если студенты есть — удаление не произойдёт, чтобы не потерять данные.
Использование плагинов для управления курсами и очистки
Если вы не хотите писать код, можно использовать специализированные плагины для оптимизации LearnPress. Например:
- Clearfy Pro — помогает оптимизировать и очистить базу данных от мусорных записей, включая старые курсы.
- WPCommunity — расширяет возможности управления пользователями и курсами, облегчая поиск неактивных пользователей и курсов.
Эти плагины позволяют выполнять массовую очистку с минимальными рисками.
Резервное копирование перед удалением
Перед удалением курсов обязательно сделайте резервную копию базы данных и файлов сайта. Для этого можно использовать популярные плагины, например BackupWordPress или воспользоваться функциями хостинга. Это позволит восстановить данные, если что-то пойдёт не так.
Выводы и рекомендации
Удаление неиспользуемых курсов в LearnPress — важная задача для поддержания порядка и производительности платформы. Главное — подходить к этому процессу ответственно, не удаляя данные студентов и связанные материалы. Используйте проверки перед удалением, пишите кастомные функции или применяйте надёжные плагины для очистки, и всегда делайте резервные копии.
Такой подход позволит сохранить целостность данных и улучшить работу вашего сайта на LearnPress.