Как удалить неиспользуемые медиафайлы в WordPress

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

Почему важно удалять неиспользуемые медиафайлы в WordPress

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

Главные проблемы неиспользуемых файлов:

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

Регулярное удаление таких файлов помогает поддерживать сайт в порядке и экономить ресурсы.

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

Плагин Media Cleaner

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

Основные возможности:

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

Для установки:

  • Перейдите в Плагины > Добавить новый.
  • Введите в поиске «Media Cleaner» и установите плагин от Meow Apps.
  • Активируйте и перейдите в раздел плагина для сканирования.

После сканирования плагин покажет список неиспользуемых файлов с возможностью их удаления.

Плагин WP-Optimize

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

Он не такой специализированный, как Media Cleaner, но подходит для комплексной оптимизации.

Инструкция:

  • Установите и активируйте плагин WP-Optimize.
  • Перейдите в раздел «Медиа» и выберите очистку неиспользуемых изображений.
  • Произведите резервное копирование перед удалением.

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

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

Основная идея скрипта

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

Пример функции WPAction для поиска неиспользуемых медиафайлов

function wpaction_find_unused_attachments() {
    global $wpdb;
    // Получаем все ID вложений (attachment)
    $attachments = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment'");
    $unused = [];

    foreach ($attachments as $attachment_id) {
        // Проверяем, используется ли вложение в контенте
        $meta = get_post_meta($attachment_id);
        $used = false;

        // Проверяем, прикреплен ли к родительской записи
        $parent_id = wp_get_post_parent_id($attachment_id);
        if ($parent_id) {
            $used = true;
        } else {
            // Проверяем ссылки на файл в контенте
            $file_url = wp_get_attachment_url($attachment_id);
            $query = $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_content LIKE %s", '%' . $wpdb->esc_like($file_url) . '%');
            $found = $wpdb->get_var($query);
            if ($found) {
                $used = true;
            }
        }

        if (!$used) {
            $unused[] = $attachment_id;
        }
    }
    return $unused;
}

Эта функция возвращает массив ID неиспользуемых вложений. В реальном проекте стоит расширить проверку — учитывать виджеты, поля ACF, плагин WooCommerce и т.д.

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

function wpaction_delete_unused_attachments() {
    $unused = wpaction_find_unused_attachments();
    foreach ($unused as $attachment_id) {
        wp_delete_attachment($attachment_id, true); // true — удалить физический файл
    }
    return count($unused);
}

Вызов этой функции удалит все найденные неиспользуемые медиафайлы. Обязательно сделайте резервную копию сайта перед применением.

Советы по безопасному удалению медиафайлов

Удаление файлов — ответственный процесс. Несколько рекомендаций:

  • Всегда делайте резервное копирование базы данных и файлов сайта.
  • Используйте тестовый стенд для проверки скриптов и плагинов.
  • Проверяйте результаты сканирования, чтобы случайно не удалить нужные файлы.
  • Автоматизируйте очистку с периодичностью, например, с помощью WP-Cron, но с ограничениями.
  • Учитывайте сторонние плагины, которые могут хранить ссылки на медиа вне стандартного контента.

Выводы

Удаление неиспользуемых медиафайлов в WordPress — важная задача для оптимизации сайта. Комбинация проверенных плагинов, таких как Media Cleaner, и собственных решений на PHP позволяет эффективно управлять медиабиблиотекой, экономить ресурсы и повышать производительность сайта.

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

Как создать собственный шорткод в WordPress
14.11.2025
Как добавить дополнительные мета-поля в административную панель WordPress
22.12.2025
Как избежать конфликтов плагинов в WordPress
13.12.2025
Как создать собственный вид записей в WordPress
25.11.2025
Обработка AJAX запросов в WordPress с примерами кода
21.11.2025