Как автоматически удалять большие файлы в WordPress: практическое решение

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

Почему важно контролировать размер файлов в WordPress

Медиафайлы — существенная часть контента на любом сайте, но без контроля за их размером и количеством растут риски:

  • Переполнение пространства на сервере, что приводит к дополнительным расходам.
  • Долгое время выполнения резервного копирования и восстановления.
  • Ухудшение скорости загрузки сайта, если большие файлы вставлены в контент.
  • Сложности с миграцией сайта из-за громоздких файлов.

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

Как определить, какие файлы считать большими

Первым шагом нужно определить критерии для удаления. Обычно это файлы, размер которых превышает определённый лимит — например, 5 МБ или 10 МБ. Также можно учитывать типы файлов, например, удалять только видео или архивы.

Подобные правила зависят от специфики сайта и доступного дискового пространства. Для WordPress часто достаточно ограничиться файлами свыше 5 МБ, не трогая изображения, если они критичны для дизайна.

Автоматическое удаление больших файлов с помощью пользовательского кода

Ниже пример функции для WordPress, которая по расписанию проверяет медиафайлы и удаляет те, что превышают заданный размер. Для запуска используем WP-Cron:

function cyrtolat_delete_large_files() {
    $size_limit = 5 * 1024 * 1024; // 5 МБ в байтах
    $args = [
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ];
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $file_path = get_attached_file(get_the_ID());
            if (file_exists($file_path)) {
                $file_size = filesize($file_path);
                if ($file_size > $size_limit) {
                    // Удаляем вложение и файл
                    wp_delete_attachment(get_the_ID(), true);
                }
            }
        }
        wp_reset_postdata();
    }
}

// Регистрируем событие, если оно ещё не существует
if (!wp_next_scheduled('cyrtolat_delete_large_files_hook')) {
    wp_schedule_event(time(), 'daily', 'cyrtolat_delete_large_files_hook');
}

// Хук для запуска функции
add_action('cyrtolat_delete_large_files_hook', 'cyrtolat_delete_large_files');

Этот код раз в сутки проверяет все вложения и удаляет файлы больше 5 МБ. Для изменения частоты можно использовать другие интервалы WP-Cron (например, 'hourly').

Использование плагинов для управления большими файлами

Если вы предпочитаете готовые решения, есть несколько полезных плагинов, которые помогут найти и удалить большие файлы:

  • Media Cleaner — анализирует медиабиблиотеку, находит неиспользуемые и большие файлы, позволяет безопасно удалять.
  • WP-Optimize — комплексная оптимизация базы данных и медиа, в том числе удаление крупных и неиспользуемых файлов.
  • FileBird — менеджер медиа с возможностью сортировки и управления файлами по папкам, помогает выявить тяжёлые объекты.

Эти плагины можно найти и установить с официального репозитория WordPress. Для интеграции с ними и автоматизации удаления используйте их встроенные настройки или API.

Как обезопасить процесс удаления больших файлов

Автоматическое удаление — мощный инструмент, но важно не потерять нужный контент. Рекомендации:

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

Например, можно расширить функцию, чтобы исключать файлы по MIME-типу:

function cyrtolat_delete_large_files() {
    $size_limit = 5 * 1024 * 1024; // 5 МБ
    $exclude_types = ['image/jpeg', 'image/png', 'image/gif'];
    $args = [
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ];
    $query = new WP_Query($args);
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $file_path = get_attached_file(get_the_ID());
            $file_type = get_post_mime_type(get_the_ID());
            if (file_exists($file_path) && !in_array($file_type, $exclude_types)) {
                $file_size = filesize($file_path);
                if ($file_size > $size_limit) {
                    wp_delete_attachment(get_the_ID(), true);
                }
            }
        }
        wp_reset_postdata();
    }
}

Заключение: регулярная уборка больших файлов для здорового сайта

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

Если хотите расширить возможности сайта, посмотрите инструменты для оптимизации и управления медиа на WPShop.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как добавить обратный отчет после отправки формы в WordPress
30.12.2025
Как автоматически транслитерировать метки (теги) в WordPress для SEO
19.03.2026
WooCommerce: автоматическое изменение цены товара при обновлении заказа
25.05.2026
Как удалить лишние слова из заголовков постов WordPress автоматически
19.01.2026
WooCommerce: автоматическое изменение стоимости и складского остатка при обновлении заказа
31.05.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙