В процессе ведения сайта на WordPress количество загруженных изображений может значительно увеличиваться, особенно если вы часто обновляете контент или проводите эксперименты с разными картинками. Со временем это приводит к захламлению медиатеки и росту размера бэкапов и базы данных. Удаление неиспользуемых и старых изображений помогает оптимизировать место на сервере и ускорить работу сайта.
Почему важно удалять старые изображения
Многие изображения остаются в медиатеке, даже если они уже не используются на страницах и в записях. Это не только занимает дисковое пространство, но и замедляет процесс создания резервных копий и обновлений сайта. Кроме того, в базе данных хранятся метаданные к этим файлам, что увеличивает ее размер и нагрузку.
Регулярное удаление неиспользуемых медиафайлов помогает поддерживать сайт в оптимальном состоянии и снижает вероятность ошибок при обновлениях и загрузках. Особенно это важно для сайтов с большим количеством контента и WooCommerce-магазинов, где количество изображений товаров может исчисляться тысячами.
Как определить, какие изображения можно удалить
Самый простой способ — использовать специальные плагины, которые анализируют медиатеку и контент сайта, выявляя неиспользуемые файлы. Они проверяют ссылки в записях, страницах, виджетах и даже в пользовательском коде.
Рассмотрим несколько популярных плагинов:
- Media Cleaner — мощный инструмент для поиска и удаления неиспользуемых файлов. Имеет бесплатную и PRO-версию. PRO-версия умеет работать с WooCommerce и плагинами, которые хранят изображения нестандартно.
- WP-Optimize — комплексный плагин для оптимизации базы данных и медиа. Включает функцию очистки неиспользуемых изображений.
- Image Cleanup — простой плагин, который ищет неиспользуемые изображения и позволяет безопасно их удалить.
Пример использования Media Cleaner
После установки плагина зайдите в раздел Media > Cleaner. Запустите сканирование. Плагин покажет список файлов, которые не найдены в контенте. Внимательно проверьте результаты, особенно если используете кастомные темы или конструкторы страниц.
Удаление изображений вручную с помощью кода
Для разработчиков и опытных пользователей можно автоматизировать удаление неиспользуемых изображений с помощью PHP. Рассмотрим пример функции wpbuy_delete_unused_images(), которая проверяет все медиафайлы и удаляет те, которые не привязаны к записям или страницам.
function wpbuy_delete_unused_images() {
$args = [
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
'post_status' => 'inherit',
];
$images = get_posts($args);
foreach ($images as $image) {
$attached = get_post_field('post_parent', $image->ID);
$content = get_posts([
's' => wp_get_attachment_url($image->ID),
'post_type' => ['post', 'page'],
'fields' => 'ids',
]);
if (empty($attached) && empty($content)) {
wp_delete_attachment($image->ID, true);
}
}
}Важно: эта функция удалит все изображения, которые не связаны напрямую с записями или страницами. Перед использованием сделайте резервную копию сайта и базы данных.
Особенности удаления изображений из WooCommerce
WooCommerce использует изображения товаров, которые могут быть связаны не напрямую через стандартный post_parent, а через метаполя и кастомные функции. Поэтому стандартные методы могут не учитывать эти связи, что приведет к удалению нужных файлов.
Для безопасного удаления рекомендуется использовать плагин Media Cleaner PRO или специальные скрипты, которые учитывают WooCommerce-логику.
Пример проверки изображений товаров WooCommerce
function wpbuy_is_wc_image_used( $attachment_id ) {
global $wpdb;
$meta_key = '_thumbnail_id';
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value = %d",
$meta_key, $attachment_id
));
return $count > 0;
}Эту функцию можно интегрировать в проверку перед удалением, чтобы не удалить изображения товаров.
Резервное копирование и тестирование перед удалением
Перед тем как удалять изображения, особенно массово, настоятельно рекомендуем сделать полное резервное копирование сайта и базы данных. В случае ошибки вы сможете быстро восстановить работоспособность.
Также советуем сначала выполнять удаление на тестовом сайте или локальной копии, чтобы проверить, что нигде не пострадал дизайн и функциональность.
Выводы и рекомендации
- Используйте специализированные плагины для безопасного поиска и удаления неиспользуемых изображений.
- Если хотите автоматизировать процесс, используйте кастомные функции с осторожностью и всегда делайте резервные копии.
- Особое внимание уделяйте изображениям WooCommerce — используйте PRO-версии плагинов или кастомные проверки.
- Регулярно проводите чистку медиатеки для поддержания скорости и стабильности сайта.
Для удобства автоматизации и расширенных возможностей по работе с медиатекой рекомендуем обратить внимание на Media Cleaner на WPSHOP.ru — плагин, который реально помогает безопасно удалять неиспользуемые изображения и освобождать место.