Автоматическое удаление старых файлов из медиа библиотеки WordPress

|

В процессе работы на сайте WordPress медиа библиотека часто разрастается, и в ней накапливаются файлы, которые уже не используются и занимают место на сервере. Особенно это актуально для сайтов с большим количеством изображений, аудио и видеофайлов. Ручное удаление таких файлов занимает много времени и требует аккуратности, чтобы не удалить нужные материалы.

Зачем нужно автоматическое удаление неиспользуемых файлов

Автоматизация удаления старых и неиспользуемых файлов медиа библиотеки позволяет:

В WordPress нет встроенного функционала для автоматического поиска и удаления неиспользуемых медиафайлов, поэтому приходится использовать дополнительные плагины или писать собственные решения.

Использование плагинов для удаления неиспользуемых файлов

Существует несколько плагинов, которые позволяют найти и удалить неиспользуемые изображения и другие файлы:

Однако такие плагины иногда могут ошибочно удалять нужные файлы, если они используются нестандартным образом (например, вставлены через кастомный код). Поэтому важно делать резервные копии перед использованием.

Автоматизация удаления старых медиа файлов на основе даты загрузки

Если нужно удалять файлы старше определённого срока вне зависимости от их использования, можно реализовать это через собственный код. Ниже пример функции для удаления медиафайлов, загруженных более 180 дней назад.

Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин.

function wpzoom_delete_old_media_files() {
    $days = 180; // Количество дней
    $date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));

    $args = array(
        'post_type'      => 'attachment',
        'post_status'    => 'inherit',
        'date_query'     => array(
            array(
                'before' => $date_threshold,
            ),
        ),
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );

    $old_attachments = get_posts($args);

    foreach ($old_attachments as $attachment_id) {
        // Проверка, используется ли файл в записях
        $is_used = wpzoom_check_media_usage($attachment_id);
        if (! $is_used) {
            wp_delete_attachment($attachment_id, true); // Полное удаление
        }
    }
}

function wpzoom_check_media_usage($attachment_id) {
    global $wpdb;
    $file = get_attached_file($attachment_id);
    if (! $file) {
        return false;
    }

    $file_name = basename($file);

    // Поиск использования файла в постах
    $query = $wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_content LIKE %s LIMIT 1",
        '%' . $wpdb->esc_like($file_name) . '%'
    );

    $result = $wpdb->get_var($query);

    return ! is_null($result);
}

// Запуск удаления по крону (пример: раз в неделю)
add_action('wp_scheduled_delete_old_media', 'wpzoom_delete_old_media_files');

if (! wp_next_scheduled('wp_scheduled_delete_old_media')) {
    wp_schedule_event(time(), 'weekly', 'wp_scheduled_delete_old_media');
}

В этом примере функция wpzoom_delete_old_media_files получает все вложения (медиафайлы), загруженные более 180 дней назад, и проверяет, используются ли они в контенте. Если нет — удаляет. Проверка реализована в wpzoom_check_media_usage, которая ищет имя файла в содержимом всех записей.

Особенности и рекомендации по автоматическому удалению

При автоматическом удалении медиафайлов важно учитывать:

Интеграция с плагинами WPShop

Если вы используете на сайте плагин Clearfy Pro, то там есть встроенные инструменты для оптимизации базы данных и очистки медиа библиотеки. Clearfy умеет находить и удалять неиспользуемые медиафайлы с удобным интерфейсом и с возможностью исключений.

Для сайтов с большим количеством отзывов и оценок, например, с плагином Expert Review, важно не удалить файлы, связанные с отзывами, поэтому автоматическую очистку лучше настраивать с учётом специфики используемых плагинов.

Выводы и лучшие практики

Автоматическое удаление старых и неиспользуемых медиафайлов помогает поддерживать сайт в порядке и экономить ресурсы. Лучший подход — комбинировать автоматические скрипты с проверенными плагинами и всегда иметь резервные копии. Если на сайте много сложных кастомизаций, стоит дополнительно тестировать работу удаления на тестовом сервере.

Используя приведённый код и рекомендации, вы сможете настроить регулярную очистку медиа библиотеки без риска случайного удаления нужных файлов.

Как использовать выпадающие списки в WordPress своими руками: примеры и код
14.04.2026
Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы
05.12.2025
Как использовать хуки в WordPress для расширения функциональности
11.11.2025
Как создать автоматический импорт постов в WordPress с поддержкой виджетов
24.03.2026
Как создать автоматическое отключение подписок в WordPress по условиям
28.01.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше