В процессе эксплуатации сайта на WordPress со временем на сервере накапливаются неиспользуемые или нерабочие изображения. Это могут быть медиафайлы, которые были загружены, но больше не используются в публикациях, страницах или виджетах. Такие файлы занимают место на диске, замедляют бэкапы и усложняют управление сайтом.
В этой статье мы разберём, как создать автоматическую систему удаления нерабочих изображений в WordPress. Рассмотрим практические решения, пример кода и полезные плагины для автоматизации задачи.
Почему важно удалять неиспользуемые изображения в WordPress
Многие владельцы сайтов не обращают внимание на медиафайлы, которые остаются после удаления контента или замены изображений. Это приводит к:
- Увеличению размера резервных копий и времени их создания;
- Росту нагрузки на сервер из-за большого количества файлов;
- Риск использования устаревших или ошибочных изображений;
- Сложностям при миграции сайта и оптимизации базы данных.
Автоматизация очистки медиа-библиотеки позволяет поддерживать сайт в порядке без необходимости ручного поиска и удаления.
Как определить неиспользуемые или нерабочие изображения
Для начала нужно понять, какие изображения считать нерабочими. Обычно это:
- Файлы, не вставленные ни в один пост, страницу или виджет;
- Изображения, на которые ссылаются, но которые физически отсутствуют на сервере (битые ссылки);
- Медиафайлы, прикреплённые к удалённым записям;
- Изображения, вставленные в устаревшие шорткоды или плагины, которые больше не используются.
Для поиска таких файлов можно использовать SQL-запросы, PHP-код или специализированные плагины.
Использование плагинов для автоматического удаления нерабочих изображений
Существует несколько плагинов, которые помогут автоматизировать этот процесс.
1. Media Cleaner
Один из самых популярных плагинов для очистки медиатеки. Он анализирует все записи, страницы, мета-данные, виджеты и даже темы на предмет использования изображений и предлагает удалить те, которые не используются.
Узнать больше и скачать Media Cleaner
2. WP-Optimize
Этот плагин не только оптимизирует базу данных, но и позволяет удалять неиспользуемые изображения и другие медиафайлы, освобождая место на сервере.
Узнать больше и скачать WP-Optimize
Создание пользовательского решения на PHP для автоматического удаления неиспользуемых изображений
Если нужна более гибкая и тонко настроенная очистка, можно написать собственный скрипт, который будет запускаться через WP-Cron. Ниже представлен пример такого решения.
Логика работы скрипта
- Получаем список всех изображений из таблицы
wp_postsс типомattachmentи mime-типомimage/. - Проверяем, используются ли эти изображения в содержимом постов, страниц, виджетов и других метаданных.
- Если изображение не найдено нигде — удаляем его с помощью функции WordPress
wp_delete_attachment().
Пример кода для WPCommunity
function wpcommunity_delete_unused_images() {
global $wpdb;
// Получаем все изображения
$attachments = $wpdb->get_results(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'"
);
foreach ($attachments as $attachment) {
$id = $attachment->ID;
$file = get_attached_file($id);
// Проверяем использование изображения в постах и метаданных
$used_in_posts = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . basename($file) . '%'
));
$used_in_meta = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value LIKE %s",
'%' . basename($file) . '%'
));
if (intval($used_in_posts) === 0 && intval($used_in_meta) === 0) {
// Удаляем вложение и файлы
wp_delete_attachment($id, true);
}
}
}
// Создаем WP-Cron событие для запуска очистки раз в неделю
if (!wp_next_scheduled('wpcommunity_weekly_unused_images_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpcommunity_weekly_unused_images_cleanup');
}
add_action('wpcommunity_weekly_unused_images_cleanup', 'wpcommunity_delete_unused_images');Этот код добавляет в WordPress планировщик задач, который каждую неделю запускает функцию очистки неиспользуемых изображений. Функция проверяет ссылки на имя файла в содержимом и метаданных и удаляет вложения, которые нигде не используются.
Советы по безопасному использованию автоматической очистки изображений
Удаление медиафайлов — операция потенциально опасная, если что-то пойдёт не так. Чтобы избежать проблем, следуйте рекомендациям:
- Перед запуском автоматической очистки создавайте резервные копии сайта и базы данных.
- Проводите тесты на тестовом сервере или копии сайта.
- Используйте флаг удаления только для файлов, которые точно не используются.
- Логируйте действия скрипта, чтобы видеть, какие файлы были удалены.
- Предусмотрите возможность отмены удаления или ручной проверки перед удалением.
Дополнительные инструменты и плагины для оптимизации медиа в WordPress
Кроме удаления неиспользуемых изображений, важно также оптимизировать используемые медиафайлы. Для этого можно задействовать плагины:
- Imagify — автоматическое сжатие изображений без потери качества;
- Smush — оптимизация и ленивое загрузка (lazy load);
- Regenerate Thumbnails — регенерация миниатюр после изменения размеров темы.
Использование этих инструментов вместе с автоматической очисткой значительно повысит производительность сайта и снизит нагрузку на сервер.
Итог
Автоматическое удаление нерабочих изображений в WordPress — важная задача для поддержания чистоты и производительности сайта. Вы можете воспользоваться готовыми плагинами или написать собственный скрипт с использованием WP-Cron, как продемонстрировано выше. Главное — обеспечить безопасность и резервное копирование перед удалением.
Для удобного управления и расширенных возможностей рекомендуем изучить плагины на WPSHOP.RU, где представлены качественные решения для WordPress.