С течением времени в WordPress-сайте накапливается огромное количество изображений, многие из которых перестают использоваться: устаревшие, временные, загруженные для тестов или снятые с публикаций. Это ведёт к раздуванию базы данных и занимает лишнее место на сервере, что замедляет сайт и усложняет резервное копирование. В этой статье мы подробно разберём, как найти и удалить такие старые изображения из WordPress, используя как готовые плагины, так и собственные решения с кодом.
Почему важно удалять неиспользуемые изображения в WordPress
Каждое изображение, сохранённое в медиатеке WordPress, занимает место на диске и в базе данных. Если оно не используется на страницах или в записях, это — лишняя нагрузка. Постепенно это приводит к:
- Увеличению размера бэкапов и времени их создания;
- Росту нагрузки на сервер и замедлению работы сайта;
- Сложностям при миграции и обновлении;
- Проблемам с SEO из-за медленной загрузки страниц.
Регулярная очистка медиатеки позволяет поддерживать сайт в порядке и повысить производительность.
Как определить неиспользуемые изображения: обзор подходов
Определить, какие изображения не используются, можно несколькими способами:
1. Поиск по базе данных и контенту
Самый точный, но сложный способ — проанализировать содержимое всех записей, страниц и мета-данных, чтобы найти ID или URL изображений, которые упоминаются в контенте. Те, что не нашли ссылок, можно считать неиспользуемыми.
Для этого нужно иметь навыки SQL-запросов и понимание структуры WordPress. Например, можно искать в таблицах wp_posts, wp_postmeta и wp_options упоминания ID вложений.
2. Использование специализированных плагинов
Есть несколько популярных плагинов, которые автоматизируют этот процесс. Они анализируют сайт и предлагают удалить неиспользуемые изображения, но всегда перед удалением рекомендуют делать резервную копию.
3. Ручной поиск и удаление
Если сайт небольшой, можно вручную проверять изображения в медиатеке, сортируя по дате и размеру, а затем проверять их использование. Однако это трудоёмко и неэффективно для больших проектов.
Рекомендуемые плагины для удаления неиспользуемых изображений
Рассмотрим несколько популярных и надёжных решений с кратким обзором функционала.
Media Cleaner
Очень популярный плагин, который сканирует базу данных и файлы, чтобы найти файлы, которые не используются на сайте. Он поддерживает работу с различными типами контента и плагинами.
Особенности:
- Поддержка сторонних плагинов и тем;
- Безопасное удаление с возможностью восстановления;
- Показывает отчёты и фильтры;
- Есть бесплатная и PRO версии.
Установка:
Установите и активируйте плагин из репозитория WordPress, перейдите в раздел Media Cleaner, запустите сканирование, просмотрите результаты и удалите ненужные файлы.
WP-Optimize
Хотя WP-Optimize в основном заточен под оптимизацию базы данных, в нём есть функция очистки медиатеки от неиспользуемых изображений.
Преимущества:
- Совместное использование с оптимизацией базы;
- Простой интерфейс;
- Возможность планировать очистку.
Force Regenerate Thumbnails
Полезен, если нужно пересоздать миниатюры после удаления или изменения размеров изображений, что часто требуется после очистки.
Пример кода для поиска неиспользуемых изображений в WordPress
Если хотите самостоятельно реализовать проверку, можно использовать следующий пример функции, которая ищет в базе данных вложения (attachments), не привязанные к постам и не используемые в контенте.
function wppuzzle_find_unused_images() {
global $wpdb;
// Получаем все id вложений типа image
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'");
$unused = [];
foreach ($attachments as $att_id) {
// Проверяем, привязан ли файл к посту
$parent_id = get_post_field('post_parent', $att_id);
if ($parent_id) continue; // Используется как вложение
// Проверяем, встречается ли URL изображения в контенте
$url = wp_get_attachment_url($att_id);
if (!$url) continue;
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($url) . '%'
));
if ($count == 0) {
$unused[] = $att_id;
}
}
return $unused;
}Эта функция возвращает массив ID вложений, которые не имеют родительских записей и не используются в контенте. Их можно безопасно удалить через wp_delete_attachment($id, true);.
Как безопасно удалить найденные изображения через код
Удалять файлы рекомендуется поэтапно и с резервным копированием. Пример удаления вложений из массива:
$unused_images = wppuzzle_find_unused_images();
foreach ($unused_images as $image_id) {
wp_delete_attachment($image_id, true); // true – удаляет файл физически
}Обязательно тестируйте на тестовом сайте, чтобы избежать потерь нужных данных.
Дополнительные советы по оптимизации медиатеки
Помимо удаления, стоит:
- Регулярно использовать плагин Clearfy Pro, который помогает отключать лишние функции и оптимизировать загрузку;
- Использовать формат WebP для новых изображений – поддерживается большинством плагинов оптимизации;
- Настроить автоматическую очистку старых транзиентов, которые могут хранить данные о изображениях;
- Использовать CDN и lazy loading, чтобы ускорить загрузку.
Заключение
Удаление старых изображений — обязательный этап поддержания здоровья сайта на WordPress. Используйте плагины Media Cleaner или WP-Optimize для автоматизации, а если хотите точности — реализуйте свои проверки через код. Не забывайте делать резервные копии перед удалением и тестировать изменения. Это поможет уменьшить размер сайта, повысить скорость и улучшить опыт пользователей.
Подробнее о плагинах и оптимизации смотрите на WPSHOP.ru.