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

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

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

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

Поэтому всегда нужно удалять медиа комплексно — через API WordPress или с помощью проверенных плагинов.

Удаление медиафайлов через WordPress API с примерами кода

Для удаления вложения (attachment) используйте функцию wp_delete_attachment. Она автоматически удалит запись из базы и физический файл (с учётом размеров) и очистит метаданные.

Пример функции для удаления изображения по ID

function wpsnippets_delete_media_by_id($attachment_id) {
    if (!current_user_can('delete_post', $attachment_id)) {
        return new WP_Error('permission_denied', 'Недостаточно прав для удаления вложения');
    }
    $result = wp_delete_attachment($attachment_id, true); // true — удаляет физические файлы
    if (!$result) {
        return new WP_Error('delete_failed', 'Не удалось удалить вложение');
    }
    return true;
}

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

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

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

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

Плагин для поиска неиспользуемых изображений

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

Для установки плагина воспользуйтесь официальным репозиторием или wpshop.ru.

Собственный пример поиска неиспользуемых вложений

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

function wpsnippets_find_unused_attachments() {
    global $wpdb;
    // Получаем все ID вложений
    $attachment_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
    $unused = [];
    foreach ($attachment_ids as $id) {
        // Проверяем, есть ли связи с другими постами через meta или post_content
        $count_meta = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value LIKE %s",
            '%' . $id . '%'
        ));
        $post_content = $wpdb->get_var($wpdb->prepare(
            "SELECT post_content FROM {$wpdb->posts} WHERE post_content LIKE %s",
            '%' . wp_get_attachment_url($id) . '%'
        ));
        if ($count_meta == 0 && empty($post_content)) {
            $unused[] = $id;
        }
    }
    return $unused;
}

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

Удаление медиа через пользовательский интерфейс с помощью плагина My Popup

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

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

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

  • Используйте поиск по базе данных (например, в phpMyAdmin или через WP CLI) по URL или ID вложения.
  • Проверьте кастомные поля и метаданные.
  • Обратите внимание на кэш и CDN — очистите их после удаления.

Можно использовать WP CLI для поиска и удаления вложений. Пример команды для удаления:

wp media delete 123 456 --yes

Где 123, 456 — ID вложений.

Оптимизация медиа после удаления

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

Выводы и рекомендации

  • Всегда удаляйте медиа через штатные функции WordPress (wp_delete_attachment), чтобы избежать ошибок.
  • Перед удалением сделайте резервную копию сайта и базы данных.
  • Для поиска неиспользуемых файлов используйте проверенные плагины, например Media Cleaner.
  • Проверяйте использование файлов во всех местах: постах, виджетах, настройках.
  • После удаления оптимизируйте базу и очистите кэш.

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

Как автоматически отключать неиспользуемые плагины в WordPress
13.04.2026
Как удалить или изменить правила перезаписи (rewrite rules) в WordPress
03.12.2025
WooCommerce: как исключить повторную отправку письма при изменении статуса заказа
03.05.2026
Как создать динамический файл sitemap.xml в WordPress с помощью хуков
04.02.2026
Как удалить неактуальные метаданные в WordPress: оптимизация базы данных
04.01.2026