Медиафайлы, такие как изображения, видео и документы, занимают значительный объем на сервере WordPress. Со временем в библиотеке накапливаются файлы, которые уже не используются на страницах и в записях, но продолжают занимать место и замедлять работу сайта. В этой статье мы разберёмся, как найти и удалить неиспользуемые медиафайлы в WordPress, чтобы оптимизировать производительность и освободить место на хостинге.
Почему важно удалять неиспользуемые медиафайлы WordPress
Накопление неиспользуемых медиафайлов негативно влияет на сайт несколькими способами:
- Занимают место на диске: Большие изображения и видео быстро заполняют выделенное место на сервере, что может привести к дополнительным расходам или ограничению работы сайта.
- Усложняют резервное копирование: Чем больше файлов, тем дольше создаются бэкапы и больше места они занимают.
- Замедляют работу админки: При большом количестве файлов медиа-библиотека загружается дольше, что снижает удобство работы.
- Повышают риск ошибок и конфликтов: Старые файлы могут конфликтовать с новыми плагинами или темами.
Поэтому регулярная чистка библиотеки — важный этап технического обслуживания WordPress.
Как найти неиспользуемые медиафайлы: обзор методов и плагинов
Для поиска неиспользуемых файлов есть несколько подходов — от использования готовых плагинов до написания собственных функций. Рассмотрим самые надёжные варианты.
Плагины для удаления неиспользуемых медиафайлов
В репозитории WordPress существуют решения, которые автоматически сканируют сайт и находят файлы, не подключённые к записям и страницам.
- Media Cleaner — один из самых популярных плагинов. Он сканирует базу данных и содержимое сайта на предмет ссылок на медиафайлы и показывает список тех, что не используются. Есть бесплатная и платная версии с расширенными возможностями.
- DNUI (Delete Not Used Image) — простой и лёгкий плагин, который удаляет изображения, не используемые в записях и страницах.
- WP-Optimize — комплексный плагин для оптимизации, который включает инструменты очистки медиа-библиотеки.
Использование плагинов удобно, но требует осторожности: перед удалением обязательно создайте резервную копию сайта и проверьте список файлов на предмет ложных срабатываний.
Поиск неиспользуемых медиафайлов с помощью SQL-запросов
Если вы уверены в своих навыках и хотите получить точный список, можно использовать SQL-запросы к базе данных WordPress.
Например, следующий запрос найдёт все медиафайлы, которые не привязаны к записям (прикреплённые файлы имеют post_parent, у которых значение 0:
SELECT * FROM wp_posts WHERE post_type = 'attachment' AND post_parent = 0;Однако этот способ не учитывает файлы, которые используются через прямые ссылки в контенте (например, вручную вставленные изображения), поэтому он не идеально подходит для полной чистки.
Как удалить неиспользуемые медиафайлы программно: пример функции для WPClean
Если вы хотите автоматизировать процесс удаления неиспользуемых файлов, можно написать собственную функцию, которая проверяет использование медиа в записях и удаляет те, которые не найдены.
Ниже пример функции с префиксом wpclean, которая сканирует медиафайлы и удаляет неиспользуемые. Для работы она использует стандартные функции WordPress.
function wpclean_delete_unused_media_files() {
global $wpdb;
// Получаем все ID вложений
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$deleted = 0;
foreach ($attachments as $attach_id) {
$file_url = wp_get_attachment_url($attach_id);
if (!$file_url) continue;
// Проверяем, встречается ли URL в любом посте
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($file_url) . '%'
));
// Проверяем, есть ли родительский пост
$parent_id = wp_get_post_parent_id($attach_id);
if ($count == 0 && $parent_id == 0) {
// Удаляем вложение и файл
wp_delete_attachment($attach_id, true);
$deleted++;
}
}
return $deleted;
}Эту функцию можно запускать вручную или через WP-CLI, чтобы раз в месяц очищать библиотеку от неиспользуемых файлов.
Рекомендации и предостережения при очистке медиа библиотеки WordPress
Удаление файлов нужно выполнять с осторожностью, чтобы не повредить содержимое сайта:
- Всегда делайте резервную копию перед массовым удалением, особенно если используете автоматические инструменты.
- Проверяйте список файлов, которые предлагается удалить, вручную, чтобы избежать удаления нужных элементов.
- Учтите, что файлы могут использоваться в виджетах, настройках темы или плагинах, поэтому автоматический поиск не всегда на 100% точен.
- Периодически проверяйте библиотеку, чтобы поддерживать сайт в оптимальном состоянии.
Если хотите, можно комбинировать использование плагинов и собственных скриптов для максимально эффективной очистки.
Оптимизация после удаления
После удаления неиспользуемых файлов рекомендуется запустить оптимизацию базы данных и кеша, чтобы полностью выгрузить ненужные данные и ускорить сайт. Для этого подойдут плагины вроде WP-Optimize или WPCleaner, а также встроенные функции хостинга.