В современном WordPress-сайте, особенно если он используется для образовательных проектов или архитектурных портфолио, часто накапливается большое количество медиафайлов, включая чертежи, схемы и технические изображения. Эти файлы занимают место на сервере и могут замедлять работу сайта, если их не контролировать. В этой статье мы разберем, как автоматизировать удаление старых чертежей в WordPress с помощью кода и плагинов, а также обеспечим безопасность и удобство этого процесса.
Почему важно автоматизировать удаление старых чертежей и как это связано с производительностью
Чертежи, как правило, имеют большой размер, особенно если они в форматах PDF, SVG, DWG или больших растровых изображениях. Со временем их количество растет, и они начинают занимать значительное дисковое пространство. Автоматическое удаление устаревших файлов позволяет:
- Снизить нагрузку на хранилище хостинга.
- Облегчить управление медиафайлами.
- Улучшить скорость резервного копирования сайта.
- Поддерживать актуальность контента и соответствие требованиям GDPR, если файлы хранят данные пользователей.
Кроме того, это помогает избежать путаницы и ошибок, когда пользователи получают доступ к устаревшим или неверным версиям файлов.
Как настроить автоматическое удаление файлов с помощью WP-Cron и кастомного кода
Рассмотрим пример, как создать задачу, которая будет регулярно удалять чертежи старше 180 дней. Предположим, что чертежи загружаются в определенную папку в wp-content/uploads/drawings и имеют расширения pdf, dwg или svg.
Шаг 1. Создаем функцию для удаления старых чертежей
function wpedu_delete_old_drawings() {
$upload_dir = wp_upload_dir();
$drawings_dir = $upload_dir['basedir'] . '/drawings';
$days_old = 180; // удалять файлы старше 180 дней
if (!is_dir($drawings_dir)) {
return;
}
$files = scandir($drawings_dir);
$now = time();
$deleted_files = 0;
foreach ($files as $file) {
if (in_array(pathinfo($file, PATHINFO_EXTENSION), ['pdf', 'dwg', 'svg'])) {
$file_path = $drawings_dir . '/' . $file;
$file_mtime = filemtime($file_path);
if ($file_mtime && ($now - $file_mtime) > ($days_old * DAY_IN_SECONDS)) {
if (unlink($file_path)) {
$deleted_files++;
}
}
}
}
if ($deleted_files) {
error_log("[WPEDU] Удалено старых чертежей: " . $deleted_files);
}
}
Шаг 2. Регистрируем событие WP-Cron для регулярного запуска
function wpedu_schedule_delete_drawings() {
if (!wp_next_scheduled('wpedu_delete_old_drawings_hook')) {
wp_schedule_event(time(), 'daily', 'wpedu_delete_old_drawings_hook');
}
}
add_action('wp', 'wpedu_schedule_delete_drawings');
add_action('wpedu_delete_old_drawings_hook', 'wpedu_delete_old_drawings');
Шаг 3. Отменяем событие при деактивации плагина или темы
function wpedu_clear_scheduled_delete_drawings() {
$timestamp = wp_next_scheduled('wpedu_delete_old_drawings_hook');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpedu_delete_old_drawings_hook');
}
}
register_deactivation_hook(__FILE__, 'wpedu_clear_scheduled_delete_drawings');
Этот код можно добавить в файл functions.php вашей темы или оформить как мини-плагин. Он ежедневно будет проверять папку с чертежами и удалять файлы старше 180 дней.
Использование плагина Clearfy Pro для управления медиа и автоматизации удаления
Если вы предпочитаете готовые решения с удобным интерфейсом, обратите внимание на плагин Clearfy Pro. Он предлагает инструменты для очистки базы данных, оптимизации сайта и управления медиафайлами, включая автоматическое удаление неиспользуемых и старых файлов.
Преимущества Clearfy Pro:
- Интуитивно понятный интерфейс для настройки правил удаления.
- Возможность планировать задачи и контролировать результат.
- Дополнительные функции оптимизации безопасности и производительности.
Для удаления старых чертежей в Clearfy Pro достаточно настроить фильтры по типу файла и дате загрузки в разделе управления медиа. Это позволит избежать ручного кода и снизит риск ошибок.
Рекомендации и меры предосторожности перед автоматическим удалением
Перед тем как внедрять автоматическое удаление, учтите несколько важных моментов:
- Резервное копирование. Всегда делайте бэкап сайта и базы данных, чтобы иметь возможность восстановить случайно удалённые файлы.
- Тестирование. Запускайте функцию удаления в тестовом режиме или на локальном сервере, чтобы убедиться, что удаляются только нужные файлы.
- Логирование. Ведите логи удаления, чтобы отслеживать процесс и своевременно реагировать на ошибки.
- Права доступа. Убедитесь, что у веб-сервера есть права на удаление файлов в нужной папке.
При соблюдении этих правил автоматизация поможет значительно упростить управление медиафайлами и повысить производительность сайта.
Заключение
Автоматическое удаление старых чертежей в WordPress — это важный элемент поддержки чистоты и скорости вашего сайта. Используя приведенный выше код или плагин Clearfy Pro, вы сможете настроить регулярную очистку без лишних усилий. Это решение особенно актуально для сайтов образовательной тематики и портфолио, где часто меняется и обновляется техническая документация.