Владельцы сайтов на WordPress часто сталкиваются с проблемой разрастания медиа-библиотеки: множество неиспользуемых, дублирующихся и устаревших изображений занимают место на сервере и замедляют работу сайта. Автоматический сброс таких изображений — важная задача для поддержания производительности и экономии дискового пространства.
Почему важно удалять неиспользуемые изображения в WordPress
Со временем на сайте накапливается много файлов, которые уже не используются ни в каких записях, страницах или элементах темы. Они могут быть созданы при загрузке изображений для черновиков, удалённых публикаций или смены дизайна. Неудалённые медиафайлы:
- Увеличивают размер резервных копий сайта.
- Загромождают сервер и затрудняют поиск нужных файлов.
- Могут замедлять резервное копирование и восстановление.
- Повышают стоимость хостинга при лимитах по дисковому пространству.
Автоматизация удаления таких файлов позволяет исключить человеческий фактор и регулярно поддерживать порядок.
Какие плагины помогут автоматизировать удаление неиспользуемых изображений
Для автоматического сброса изображений можно использовать проверенные и функциональные плагины. Рассмотрим несколько популярных решений:
1. Media Cleaner
Один из лучших плагинов для поиска и удаления неиспользуемых медиафайлов. Он сканирует базу данных и файлы, выявляя изображения, не привязанные к контенту. В Pro-версии есть поддержка WooCommerce, ACF и других популярных плагинов.
Плюсы:
- Поддержка автоматического запуска сканирования через WP-Cron.
- Возможность восстановления файлов из карантина.
- Поддержка массового удаления.
2. WP-Optimize
Помимо оптимизации базы данных, WP-Optimize умеет очищать неиспользуемые медиафайлы. Это удобно, если вы хотите комплексный инструмент для оптимизации сайта.
3. WPSHOP My Popup + автоматизация
Если на сайте используется плагин My Popup, можно создать уведомления для администраторов о необходимости очистки медиа, а затем запускать задачи с помощью WP-Cron.
Как программно реализовать автоматический сброс неиспользуемых изображений
Если хотите создать своё решение без сторонних плагинов, можно использовать следующий алгоритм:
- Получить список всех медиафайлов (attachment post type).
- Проверить, используется ли каждый файл в записях, страницах, метаданных и виджетах.
- Если файл нигде не используется, удалить его программно.
- Запустить этот скрипт по расписанию с помощью WP-Cron.
Пример функции для проверки и удаления неиспользуемых изображений (wp1_auto_clean_unused_images)
function wp1_auto_clean_unused_images() {
global $wpdb;
// Получаем все attachment
$attachments = get_posts([
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
]);
foreach ($attachments as $attachment) {
$id = $attachment->ID;
$used = false;
// Проверяем, есть ли упоминание в контенте (posts, pages)
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->posts WHERE post_content LIKE %s",
'%%' . wp_get_attachment_url($id) . '%%'
));
if ($count > 0) {
$used = true;
}
// Проверяем мета данные (например, для плагинов)
if (!$used) {
$meta = $wpdb->get_var($wpdb->prepare(
"SELECT meta_id FROM $wpdb->postmeta WHERE meta_value LIKE %s",
'%%' . $id . '%%'
));
if ($meta) {
$used = true;
}
}
// Если не используется, удаляем
if (!$used) {
wp_delete_attachment($id, true);
}
}
}
// Добавляем событие в WP-Cron для еженедельного запуска
if (!wp_next_scheduled('wp1_auto_clean_images_cron')) {
wp_schedule_event(time(), 'weekly', 'wp1_auto_clean_images_cron');
}
add_action('wp1_auto_clean_images_cron', 'wp1_auto_clean_unused_images');
Эта функция сканирует все вложения, ищет использование в контенте и метаданных, и удаляет те, что не задействованы. Запуск по cron гарантирует автоматическую чистку.
Особенности и ограничения автоматического удаления изображений
Автоматическое удаление — мощный инструмент, но требует аккуратности. Учтите следующие моменты:
- Проверяйте результаты в тестовом окружении, чтобы не удалить важные файлы.
- Резервное копирование перед запуском — обязательное условие.
- Некоторые плагины хранят ссылки на изображения вне стандартного контента, что может привести к ошибочному удалению.
- Используйте карантин или временную папку для удаления, если плагин поддерживает.
Рекомендации по оптимизации после удаления изображений
После очистки медиатеки полезно выполнить следующие действия:
- Оптимизировать оставшиеся изображения с помощью плагинов, например, Clearfy Pro.
- Очистить кэш сайта и CDN, если он используется.
- Перегенерировать миниатюры через плагины, например Regenerate Thumbnails.
Правильная автоматизация и регулярный аудит медиафайлов помогут содержать WordPress сайт в порядке и сохранять оптимальные показатели скорости и надежности.