Любой сайт на WordPress с течением времени накапливает множество медиафайлов, которые перестают использоваться на страницах и в записях. Это приводит к большому размеру папки uploads, замедлению резервного копирования и увеличению затрат на хостинг. В этой статье разберём, как найти и удалить неиспользуемые медиафайлы, чтобы оптимизировать ваш сайт на WordPress.
Почему важно удалять неиспользуемые медиафайлы WordPress
Каждый медиафайл занимает место на сервере. Даже если он не отображается на сайте, он всё равно будет сохраняться в базе данных и занимать дисковое пространство. Чем больше файлов, тем дольше выполняются резервные копии и тем выше нагрузка на сервер. Удаление неиспользуемых файлов помогает:
- Снизить размер бэкапов.
- Повысить скорость загрузки сайта.
- Облегчить управление медиатекой.
- Избавиться от мусора, который может привести к конфликтам или ошибкам при обновлении.
Как найти неиспользуемые медиафайлы в WordPress
Определить, какие файлы не используются, — задача не из простых, так как WordPress хранит ссылки на медиа в разных местах: контент записей, виджеты, мета-поля, настройки тем и плагинов. Рассмотрим несколько способов поиска.
1. Использование плагинов для поиска неиспользуемых медиафайлов
Существуют специализированные плагины, которые сканируют базу данных и содержимое сайта, чтобы определить, какие файлы не используются.
- Media Cleaner — один из лучших плагинов для этой задачи. Он анализирует библиотеку и контент, показывает список неиспользуемых файлов с возможностью безопасного удаления.
- DNUI (Delete Not Used Image) — простой плагин, который ищет неиспользуемые изображения и позволяет удалить их.
- WP-Optimize — комплексный плагин для оптимизации сайта, в том числе имеет функционал очистки медиа.
Для примера рассмотрим работу с Media Cleaner:
- Установите и активируйте плагин Media Cleaner.
- В админке перейдите в «Медиа» → «Cleaner».
- Запустите сканирование. Плагин покажет список файлов, которые не используются в текущих записях и страницах.
- Проверьте файлы, чтобы не удалить нужные (например, используемые в кастомных полях или плагинах).
- Удалите выбранные файлы.
2. Поиск через SQL-запросы и собственные скрипты
Если вы не хотите использовать плагины, можно написать собственный скрипт для поиска неиспользуемых медиафайлов. Пример ниже показывает, как получить список медиафайлов, которые не встречаются в содержимом записей и страниц.
function wptips_get_unused_media_files() {
global $wpdb;
// Получаем все вложения
$attachments = $wpdb->get_results("SELECT ID, guid FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $attachment) {
$url = $attachment->guid;
// Проверяем наличие URL в содержимом записей и страниц
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s AND post_status = 'publish'",
'%' . $wpdb->esc_like($url) . '%'
));
if ($count == 0) {
$unused[] = [
'ID' => $attachment->ID,
'url' => $url
];
}
}
return $unused;
}
// Пример использования
$unused_files = wptips_get_unused_media_files();
foreach ($unused_files as $file) {
echo "ID: {$file['ID']}, URL: {$file['url']}<br>";
}Этот код ищет медиафайлы, не встречающиеся в опубликованных статьях и страницах. Однако он не учитывает ссылки из виджетов, мета-полей и сторонних плагинов, поэтому использовать его стоит с осторожностью и только после резервного копирования.
Удаление неиспользуемых медиафайлов безопасно
Перед удалением обязательно сделайте полную резервную копию сайта и базы данных. Это позволит восстановить файлы, если что-то пойдёт не так. Также рекомендуется:
- Проверять каждый файл вручную при удалении через плагин.
- Использовать режим тестирования в плагинах, чтобы видеть список, не удаляя сразу.
- Удалять файлы постепенно, чтобы проверять влияние на сайт.
Автоматизация удаления неиспользуемых медиафайлов
Для опытных пользователей можно настроить автоматическую очистку неиспользуемых файлов с помощью WP-CLI и кастомных скриптов. Пример простой команды для удаления вложений по ID:
function wptips_delete_unused_media($ids) {
foreach ($ids as $id) {
wp_delete_attachment($id, true); // true - удаляет физический файл
}
}
// Пример вызова
$unused = wptips_get_unused_media_files();
$ids = wp_list_pluck($unused, 'ID');
wptips_delete_unused_media($ids);Такой подход требует понимания структуры сайта и уверенности, что удаляются именно неиспользуемые файлы.
Рекомендации по работе с медиатекой для предотвращения захламления
Чтобы медиафайлы не накапливались бесконтрольно, рекомендуется:
- Регулярно чистить медиатеку с помощью плагинов.
- Использовать плагин для оптимизации изображений, который удаляет дубликаты.
- При загрузке медиа использовать правильные форматы и оптимальный размер.
- Удалять неиспользуемые изображения сразу после редактирования контента.
Соблюдение этих правил поможет поддерживать ваш сайт в чистоте и порядке.
Заключение
Удаление неиспользуемых медиафайлов — важный этап оптимизации WordPress-сайта. Используйте проверенные плагины, например Media Cleaner, или пишите собственные функции с осторожностью. Не забывайте делать резервные копии и проверять результаты перед удалением. Это поможет сделать ваш сайт быстрее и удобнее в обслуживании.