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

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

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

Каждый загруженный файл сохраняется в папке wp-content/uploads, а ссылки на них хранятся в базе данных в таблице wp_posts с типом записи attachment. Но с течением времени часть из них перестает использоваться, например, после удаления страниц, постов, смены дизайна или редизайна контента. Оставшиеся без ссылок медиа файлы занимают место и создают беспорядок.

Удаление таких файлов позволяет:

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

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

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

Пример SQL-запроса, который показывает все вложения без родительских записей (то есть не прикрепленные к постам):

SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'attachment' AND post_parent = 0;

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

Поиск неиспользуемых медиа через PHP и WP_Query

Можно написать кастомный скрипт, который проверит наличие ссылки на файл в постах и страницах:

<?php
function wpkeys_find_unused_media() {
    global $wpdb;
    $attachments = $wpdb->get_results("SELECT ID, guid FROM {$wpdb->posts} WHERE post_type = 'attachment'");
    $unused = [];
    foreach ($attachments as $attachment) {
        $file_url = $attachment->guid;
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . $wpdb->esc_like($file_url) . '%'
        ));
        if ($count == 0) {
            $unused[] = $attachment;
        }
    }
    return $unused;
}
$unused_media = wpkeys_find_unused_media();
foreach ($unused_media as $media) {
    echo 'ID: ' . $media->ID . ' URL: ' . $media->guid . "<br>";
}
?>

Этот код выводит список вложений, которые не встречаются в содержимом постов и страниц. Такой список можно использовать для дальнейшего удаления.

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

Удалять медиа файлы нужно аккуратно, чтобы не сломать сайт. Для этого:

  • Создайте резервную копию базы данных и файлов перед удалением.
  • Используйте функцию WordPress wp_delete_attachment(), чтобы удалить вложение и все его метаданные.
  • Удаляйте файлы пакетно, чтобы избежать случайных ошибок.

Пример автоматического удаления через код

Ниже пример функции, которая удаляет вложения по ID безопасно через WP API:

function wpkeys_delete_unused_media($attachment_ids) {
    foreach ($attachment_ids as $id) {
        $deleted = wp_delete_attachment($id, true); // true — удаляет и файл
        if ($deleted) {
            echo "Удалено вложение ID: $id<br>";
        } else {
            echo "Ошибка при удалении ID: $id<br>";
        }
    }
}

// Использование
$unused = wpkeys_find_unused_media();
$ids_to_delete = wp_list_pluck($unused, 'ID');
wpkeys_delete_unused_media($ids_to_delete);

Этот подход гарантирует, что удаление пройдет через встроенные методы WordPress и не оставит мусорных данных в базе.

Альтернативные методы и плагины для удаления неиспользуемых медиа

Если вы хотите автоматизировать процесс без ручного кода, можно использовать плагины. Среди них:

  • Media Cleaner — сканирует библиотеку и находит неиспользуемые файлы.
  • Clearfy Pro — расширенный инструмент оптимизации сайта, включая работу с медиа.

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

Рекомендации по работе с медиа в WordPress

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

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

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

Как удалить или изменить класс в меню WordPress без плагинов
15.02.2026
Как создать многоуровневую навигацию в WordPress с помощью hierarchical menu
13.04.2026
Как избежать конфликтов между плагинами WordPress: практические советы и кодовые примеры
04.03.2026
WooCommerce: автоматическое изменение стоимости товара при определённых условиях
03.05.2026
Как создать и использовать собственные виджеты в WordPress
25.11.2025

На оформлении, скоро здесь появится полноценный ресурс