Почему важно удалять неиспользуемые медиафайлы в WordPress
При ведении сайта на WordPress со временем накапливается множество изображений, видео и других медиафайлов, которые больше не используются ни на одной странице или в записях. Это приводит к увеличению размера медиа-библиотеки, замедлению резервного копирования, расходу пространства на хостинге и даже к снижению производительности сайта.
Удаление таких файлов вручную почти невозможно, особенно если сайт большой и контента много. Поэтому стоит автоматизировать этот процесс — с помощью плагинов и собственных скриптов. В этой статье мы подробно рассмотрим, как найти и массово удалить неиспользуемые медиафайлы, сохранив при этом безопасность данных.
Как найти неиспользуемые медиафайлы: обзор плагинов
Существует несколько популярных плагинов, которые помогают выявить и удалить неиспользуемые медиафайлы:
- Media Cleaner — мощный инструмент, который сканирует контент сайта, включая страницы, записи, мета-поля, виджеты и даже пользовательские типы записей, чтобы найти неиспользуемые файлы. Есть бесплатная и про-версия с расширенным функционалом.
- DNUI (Delete Not Used Image) — простой и легкий плагин, который ищет изображения, не прикрепленные к записям. Подходит для базового очищения.
- WP-Optimize — плагин для оптимизации базы данных и сайта в целом, содержит инструмент для удаления неиспользуемых изображений.
Выбор плагина зависит от размера сайта и глубины анализа, которую вы хотите провести. Для серьезного аудита советуем Media Cleaner Pro.
Пример использования Media Cleaner для поиска неиспользуемых файлов
После установки и активации плагина Media Cleaner перейдите в раздел Media > Cleaner. Запустите сканирование — плагин проверит все записи, страницы, виджеты и кастомный контент на предмет ссылок на медиафайлы. По окончании сканирования вы увидите список неиспользуемых файлов, которые можно безопасно удалить.
Важно: перед удалением рекомендуем создать бэкап сайта и базы данных, чтобы избежать потери нужных данных.
Как программно найти и удалить неиспользуемые медиафайлы в WordPress
Если вы хотите создать собственный скрипт для поиска неиспользуемых медиафайлов, можно использовать WP_Query для поиска всех вложений и проверять, используются ли они в контенте.
Пример функции с префиксом wpreg_, которая возвращает ID вложений, не используемых в записях:
function wpreg_get_unused_attachments() {
global $wpdb;
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $attachment_id) {
$file = get_attached_file($attachment_id);
$used = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . basename($file) . '%'
));
if (!$used) {
$unused[] = $attachment_id;
}
}
return $unused;
}Эта функция перебирает все вложения, получает имя файла и ищет его в содержимом всех записей. Если файл не найден, ID добавляется в массив неиспользуемых вложений.
Удаление неиспользуемых вложений через код
После того как получили список неиспользуемых вложений, можно их программно удалить, используя функцию wp_delete_attachment. Пример функции с префиксом wpreg_:
function wpreg_delete_unused_attachments() {
$unused = wpreg_get_unused_attachments();
foreach ($unused as $attachment_id) {
wp_delete_attachment($attachment_id, true); // true - удаляет файлы физически
}
}Запускать эту функцию лучше из консоли WP-CLI или из административной части с подтверждением, чтобы избежать случайного удаления важных файлов.
Особенности и подводные камни при удалении медиафайлов
Внимание! Не все медиафайлы имеют прямые ссылки в контенте. Некоторые используются в плагинах, темах, мета-полях или в настройках сайта. Поэтому автоматический поиск по контенту может пропустить такие случаи или, наоборот, посчитать файл неиспользуемым.
Для безопасности:
- Всегда делайте полный бэкап сайта и базы данных перед массовым удалением.
- Проверяйте список файлов вручную, если это возможно.
- Используйте расширенные плагины с поддержкой кастомных типов записей и мета-полей.
- Ограничьте удаление только теми файлами, которые точно не используются.
Использование WP-CLI для безопасного удаления
Если у вас есть доступ к консоли сервера, можно использовать WP-CLI для поиска и удаления медиафайлов. Например, чтобы получить список всех вложений:
wp media list --field=IDИ удалять по одному или группами, предварительно проверив их использование.
Выводы и рекомендации по очистке медиа-библиотеки
Массовое удаление неиспользуемых медиафайлов — важная задача для поддержания производительности и экономии ресурсов сайта на WordPress. Использование готовых плагинов, таких как Media Cleaner, значительно упрощает эту задачу.
Если требуется кастомное решение, то с помощью функций, приведенных выше, можно реализовать поиск и удаление через собственный код. Но всегда помните о необходимости резервного копирования и тщательной проверки.
Рекомендую регулярно проводить аудит медиа-библиотеки, чтобы не накапливать мусор и поддерживать сайт в оптимальном состоянии.