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

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

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

Медиафайлы занимают значительную часть дискового пространства на хостинге, особенно на сайтах с большим количеством публикаций и загрузок. Неиспользуемые или устаревшие файлы:

  • Увеличивают нагрузку на бэкапы и время их создания;
  • Могут замедлять работу сайта при сканировании библиотеки;
  • Затрудняют поиск нужных медиа и управление ими.

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

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

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

  • Возраст файла — например, файлы, которые не использовались в публикациях более 1 года;
  • Отсутствие привязки — файлы, которые не прикреплены к постам, страницам или другим типам записей;
  • Отсутствие ссылок — файлы, на которые нет внутренних ссылок в контенте сайта.

В зависимости от сайта и целей, можно выбрать один или несколько критериев.

Автоматизация удаления с помощью плагинов

Плагин Media Cleaner

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

Особенности:

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

Для сайтов с большим количеством медиа и сложной структурой рекомендуется использовать Pro-версию, которая умеет работать с расширенными типами контента.

Плагин WP-Optimize

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

Автоматическое удаление с помощью кода

Если вы предпочитаете кастомные решения и хотите полностью контролировать процесс, можно реализовать автоматическое удаление старых медиа с помощью PHP и хуков WordPress.

Ниже пример функции, которая удаляет медиафайлы, не прикрепленные к записям и загруженные более 180 дней назад:

function wpcatalog_delete_old_unattached_media() {
    $args = array(
        'post_type'      => 'attachment',
        'post_status'    => 'inherit',
        'posts_per_page' => -1,
        'date_query'     => array(
            array(
                'column' => 'post_date',
                'before' => '180 days ago',
            ),
        ),
        'meta_query'     => array(
            array(
                'key'     => '_wp_attachment_context',
                'compare' => 'NOT EXISTS',
            ),
        ),
        'post_parent'    => 0,
    );

    $query = new WP_Query( $args );

    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            $attachment_id = get_the_ID();
            // Удаляем вложение вместе с файлами
            wp_delete_attachment( $attachment_id, true );
        }
        wp_reset_postdata();
    }
}

// Запускаем функцию по крону раз в неделю
if ( ! wp_next_scheduled( 'wpcatalog_weekly_media_cleanup' ) ) {
    wp_schedule_event( time(), 'weekly', 'wpcatalog_weekly_media_cleanup' );
}
add_action( 'wpcatalog_weekly_media_cleanup', 'wpcatalog_delete_old_unattached_media' );

Объяснение кода:

  • Запрос выбирает все вложения, загруженные более 180 дней назад, которые не привязаны к каким-либо записям (post_parent = 0);
  • Для каждого такого вложения вызывается wp_delete_attachment с параметром true, чтобы удалить файлы из файловой системы;
  • Функция запускается раз в неделю через WordPress Cron.

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

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

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

  • Используйте плагины, которые умеют искать ссылки на медиа в базе и контенте;
  • Перед массовым удалением сделайте полный бэкап сайта и базы данных;
  • Проводите удаление сначала на тестовом сайте;
  • Можно добавить в код дополнительную проверку, например, искать URL файла в тексте постов.

Дополнительные рекомендации и плагины для оптимизации медиа

Для комплексного управления медиа рекомендуем обратить внимание на следующие инструменты:

  • Clearfy Pro — плагин для оптимизации и очистки WordPress, включая работу с медиа.
  • WPRemark — для улучшения работы с комментариями и медиа.

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

Как создать динамические виджеты WordPress с помощью кода
09.04.2026
Как удалить или изменить meta robots в WordPress для улучшения SEO
05.01.2026
Автоматическое удаление старого контента в WordPress
13.04.2026
Как удалить или изменить meta robots в WordPress для улучшения SEO
26.01.2026
Автоматизация создания и удаления черновиков в WordPress
24.03.2026