В процессе работы с WordPress сайта накапливается огромное количество медиа файлов, многие из которых перестают использоваться в контенте. Это приводит к засорению дискового пространства и замедлению работы сайта. В этой статье разберем, как автоматически находить и удалять неиспользуемые медиа файлы, используя плагины и кастомный код.
Почему важно удалять неиспользуемые медиа файлы в WordPress
Медиа файлы, загруженные в библиотеку, занимают место на сервере. Если они не используются в публикациях, страницах или других типах контента, они становятся просто балластом. Это негативно влияет на:
- Объем резервных копий — растет время и размер бэкапов;
- Производительность — при большом количестве файлов могут замедляться операции с библиотекой;
- Организацию контента — сложно ориентироваться в медиафайлах;
- Безопасность — старые файлы могут содержать уязвимости.
Поэтому регулярное удаление неиспользуемых медиа файлов — важная задача для оптимизации сайта.
Использование плагинов для удаления неиспользуемых изображений
Плагин Media Cleaner
Media Cleaner — популярный плагин для поиска и удаления неиспользуемых медиа файлов. Он анализирует базу данных и контент сайта, чтобы выявить неиспользуемые записи в библиотеке.
Основные возможности:
- Сканирование медиа библиотеки и контента;
- Поддержка стандартных постов, страниц, кастомных типов записей, плагинов;
- Возможность удаления как в корзину, так и окончательно;
- Поддержка мультимедийных файлов, не только изображений.
Для установки перейдите в админке WordPress в раздел Плагины → Добавить новый, введите «Media Cleaner», установите и активируйте.
После активации зайдите в Медиа → Media Cleaner и запустите сканирование. Плагин покажет список неиспользуемых файлов, которые можно безопасно удалить.
Плагин WP-Optimize
WP-Optimize — многофункциональный плагин для оптимизации базы данных и очистки мусора, включая неиспользуемые медиа файлы.
В разделе очистки он позволяет удалить неиспользуемые и дублирующиеся изображения, что помогает освободить место на сервере.
Реализация автоматического удаления неиспользуемых медиа через код
Если вы хотите более гибкое решение без сторонних плагинов, можно написать код, который будет проверять и удалять неиспользуемые медиа файлы по расписанию.
Пример кода для удаления медиа файлов, не используемых в постах:
function wpdownload_get_unused_attachments() {
global $wpdb;
// Получаем все ID вложений
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $attachment_id) {
$meta = get_post_meta($attachment_id);
$guid = get_post_field('guid', $attachment_id);
// Ищем использование вложения в контенте
$used = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($guid) . '%'
));
if (!$used) {
$unused[] = $attachment_id;
}
}
return $unused;
}
function wpdownload_delete_unused_attachments() {
$unused = wpdownload_get_unused_attachments();
foreach ($unused as $attachment_id) {
wp_delete_attachment($attachment_id, true);
}
}
// Запускаем очистку раз в неделю
add_action('wpdownload_weekly_cleanup', 'wpdownload_delete_unused_attachments');
if (!wp_next_scheduled('wpdownload_weekly_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpdownload_weekly_cleanup');
}Этот код:
- Находит вложения, не используемые в содержимом постов;
- Удаляет их полностью из базы и файловой системы;
- Настраивает еженедельное задание для автоматизации процесса.
Обратите внимание, что код не проверяет использование файлов в виджетах, настройках плагинов или других местах — в сложных случаях лучше использовать специализированные плагины.
Как обезопасить процесс удаления неиспользуемых медиа
При автоматическом удалении важно избегать удаления нужных файлов. Вот несколько советов для безопасной работы:
- Резервное копирование — перед удалением всегда делайте бэкап базы и файлов;
- Ручная проверка — используйте средства плагинов для просмотра списка на удаление;
- Исключения — добавляйте фильтры или исключения для важных файлов;
- Логирование — ведите журнал удалений для отката;
- Тестирование — сначала запускайте на тестовой среде.
Например, в коде выше можно расширить функцию, чтобы исключать вложения с определенными метками или в определенных папках.
Заключение
Удаление неиспользуемых медиа файлов помогает оптимизировать WordPress сайт, снижая нагрузку на сервер и улучшая управление контентом. Для этого можно использовать готовые плагины, такие как Media Cleaner и WP-Optimize, либо реализовать собственное решение с помощью кода и cron-задач.
Если хотите расширить функционал управления медиа, обратите внимание на комплексные плагины из WPShop, которые помогают автоматизировать работу с файлами и оптимизировать сайт.