В процессе работы с WordPress на сайт часто загружаются изображения, видео и другие медиафайлы, которые со временем перестают использоваться. Они занимают место на сервере и могут замедлять работу сайта, особенно если база данных и папка uploads разрастаются до гигантских размеров. В этой статье мы подробно разберём, как найти и удалить такие неиспользуемые загрузки, а также рассмотрим полезные плагины и кодовые решения для автоматизации этого процесса.
Почему важно удалять неиспользуемые медиафайлы в WordPress
Медиафайлы — это не только изображения, но и документы, аудио, видео и прочие вложения. В процессе редактирования контента многие из них становятся ненужными. Вот основные причины, почему стоит избавляться от неиспользуемых загрузок:
- Экономия места на хостинге и снижение затрат.
- Ускорение работы сайта и админ-панели за счёт уменьшения количества файлов.
- Оптимизация резервных копий и обновлений — меньше данных значит быстрее процесс.
- Улучшение безопасности — меньше файлов, которые могут содержать уязвимости.
Удаление нужно делать аккуратно, чтобы не повредить структуру сайта и не потерять важные изображения.
Как найти неиспользуемые загрузки вручную
Самый простой способ — проверить, какие медиафайлы не прикреплены к записям и страницам. В WordPress при загрузке файла создаётся связь с постом (attachment post type). Если файл не привязан к записи, возможно, он не используется.
Для просмотра таких файлов можно воспользоваться стандартной библиотекой медиафайлов. Фильтр «Не прикреплённые» покажет файлы без связи с постами.
Однако это не всегда означает, что файл не используется — он может быть вставлен вручную в код темы или через шорткод.
Поэтому важно дополнительно проверить содержимое сайта на наличие ссылок на эти файлы.
Плагины для автоматического поиска и удаления неиспользуемых загрузок
Чтобы автоматизировать процесс, рекомендуется использовать специализированные плагины. Ниже рассмотрим несколько проверенных решений.
1. Media Cleaner
Один из самых популярных плагинов для очистки медиатеки. Плагин сканирует базу данных и файлы, сравнивает их и показывает список неиспользуемых файлов.
Особенности Media Cleaner:
- Поддержка стандартных записей, кастомных типов постов и полей.
- Возможность предварительного просмотра и восстановления файлов.
- Совместимость с плагинами WooCommerce и Advanced Custom Fields.
Установка и использование просты — после активации запускайте сканирование и удаляйте ненужные файлы.
Скачать можно на официальной странице плагина.
2. WP Web Media Cleaner Pro (на примере плагина из магазина WPSHOP)
Если вы хотите более глубокую интеграцию с вашим сайтом и дополнительный функционал, можно использовать платный плагин Media Cleaner Pro от WPSHOP.
Он умеет:
- Автоматически удалять дубликаты изображений.
- Поддерживает мультиязычные сайты и сложные кастомные поля.
- Выполняет безопасное удаление с возможностью отката.
Для сайтов с большой медиатекой этот плагин станет настоящим помощником.
Пример кода для поиска неиспользуемых файлов в WordPress
Если вы хотите встроить базовую проверку в свой плагин или тему, можно использовать следующий пример кода. Он ищет медиафайлы, не прикреплённые к постам:
function wpweb_get_unused_attachments() {
$args = array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
'meta_query' => array(
array(
'key' => '_wp_attachment_context',
'compare' => 'NOT EXISTS'
)
),
'post_parent' => 0
);
$unused_attachments = get_posts($args);
return $unused_attachments;
}
// Пример использования
$unused = wpweb_get_unused_attachments();
foreach ($unused as $attachment) {
echo 'ID: ' . $attachment->ID . ' - ' . $attachment->post_title . '<br>';
}
Этот код выводит список вложений без родительской записи, что является явным признаком неиспользуемого файла.
Как безопасно удалить найденные неиспользуемые медиафайлы
Удаление файлов нужно выполнять в несколько этапов:
- Сделайте резервную копию сайта и базы данных.
- Проверьте найденные файлы вручную — откройте их, убедитесь, что они не используются в меню, виджетах, коде темы.
- Удаляйте через плагин или с помощью кода, вызывая функцию
wp_delete_attachment($attachment_id, true), где второй параметр отвечает за физическое удаление файла.
Пример удаления вложения по ID:
function wpweb_delete_unused_attachments() {
$unused = wpweb_get_unused_attachments();
foreach ($unused as $attachment) {
wp_delete_attachment($attachment->ID, true);
}
}
Запускайте этот код только после тщательной проверки и на тестовом сайте.
Дополнительные советы по оптимизации медиатеки WordPress
Чтобы не сталкиваться с проблемой накопления неиспользуемых файлов, следуйте рекомендациям:
- Используйте плагин Clearfy Pro или аналогичные для автоматической очистки базы данных и оптимизации медиа.
- Ограничьте количество автоматически создаваемых размеров изображений в настройках темы.
- Удаляйте неиспользуемые изображения сразу после редактирования постов.
- Используйте CDN и внешние хранилища для крупных файлов.
Таким образом, правильное управление загрузками позволит сохранить производительность и порядок на вашем сайте.