В процессе активной работы с WordPress на сайте со временем накапливается большое количество старых и неиспользуемых изображений. Они занимают место на сервере и могут негативно влиять на скорость работы сайта и его бэкап. В этой статье разберём, как автоматически удалять старые изображения в WordPress, чтобы поддерживать чистоту медиа-библиотеки и экономить ресурсы.
Почему важно удалять старые изображения в WordPress
При загрузке медиафайлов WordPress сохраняет не только оригинальное изображение, но и несколько его копий разных размеров. Если удалять посты или менять контент, изображения могут остаться в библиотеке без привязки к записям. Это приводит к:
- Перегрузке хранилища сайта;
- Увеличению времени бэкапа и восстановления;
- Росту нагрузки на сервер при работе с медиа;
- Снижению удобства управления библиотекой.
Автоматизация удаления таких файлов поможет поддерживать порядок и оптимизировать работу сайта.
Как определить старые и неиспользуемые изображения
Для начала необходимо понять, какие изображения считаются старыми или неиспользуемыми. Обычно это:
- Файлы, которые не прикреплены ни к одному посту или странице;
- Изображения, которые не используются в медиаконтенте (в тексте, виджетах, настройках темы);
- Файлы, которые не открывались или не изменялись длительное время (например, 6 месяцев и более).
Для автоматизации потребуется скрипт, который будет проверять такие условия и удалять файлы по расписанию.
Использование плагинов для удаления старых изображений
Существуют плагины, которые помогут выявить и удалить неиспользуемые изображения:
- Media Cleaner — анализирует библиотеку и выявляет неиспользуемые файлы. Позволяет безопасно удалять их вручную или автоматически. Ссылка на плагин.
- DNUI (Delete Not Used Image) — облегчённый плагин для поиска и удаления неиспользуемых изображений. Подходит для небольших сайтов.
Однако такие плагины требуют внимания и проверки результатов перед удалением, чтобы случайно не удалить нужные файлы.
Как написать собственный скрипт для автоматического удаления неиспользуемых изображений
Если вы хотите более гибко контролировать процесс, можно создать собственный плагин или скрипт. Ниже приведён пример функции, которая проверяет медиафайлы и удаляет те, которые не прикреплены к постам:
function wpcodex_delete_unused_images() {
$args = [
'post_type' => 'attachment',
'post_mime_type' => 'image%',
'posts_per_page' => -1,
'post_status' => 'inherit',
];
$attachments = get_posts($args);
foreach ($attachments as $attachment) {
// Проверяем, прикреплён ли файл к посту
if (empty($attachment->post_parent)) {
// Дополнительно можно проверить использование в контенте
$file_url = wp_get_attachment_url($attachment->ID);
$used = wpcodex_check_image_usage($file_url);
if (!$used) {
wp_delete_attachment($attachment->ID, true);
}
}
}
}
function wpcodex_check_image_usage($image_url) {
global $wpdb;
$like = '%' . $wpdb->esc_like($image_url) . '%';
// Проверяем наличие URL изображения в содержимом постов
$query = $wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_content LIKE %s AND post_status = 'publish'",
$like
);
$result = $wpdb->get_var($query);
return !empty($result);
}
Этот код можно вызвать по расписанию с помощью WP-Cron, чтобы регулярно очищать неиспользуемые изображения.
Как настроить WP-Cron для автоматического запуска очистки
Добавьте в functions.php или в плагин следующий код для регистрации события:
if (!wp_next_scheduled('wpcodex_daily_image_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpcodex_daily_image_cleanup');
}
add_action('wpcodex_daily_image_cleanup', 'wpcodex_delete_unused_images');
Это запустит функцию wpcodex_delete_unused_images раз в сутки. При необходимости период можно изменить.
Дополнительные советы по оптимизации работы с изображениями
Для эффективного управления изображениями рекомендуется:
- Регулярно проводить аудит медиа-библиотеки с помощью плагинов или кастомных скриптов;
- Использовать плагины с функцией очистки кеша изображений, например Clearfy Pro;
- Автоматически оптимизировать изображения при загрузке с помощью плагинов, таких как Imagify или Smush;
- Сохранять резервные копии перед массовым удалением файлов;
- Проверять использование изображений в нестандартных местах, например в настройках темы или кастомных полях.
Заключение
Автоматическое удаление старых и неиспользуемых изображений — важная задача для поддержания здоровья сайта на WordPress. Использование готовых плагинов или собственных скриптов поможет экономить место и улучшить производительность. Следите за медиа-библиотекой и не допускайте накопления неактуальных файлов.