В процессе работы с WordPress накапливается большое количество медиафайлов, среди которых часто остаются неиспользуемые и устаревшие изображения. Это приводит к увеличению размера базы данных и замедлению работы сайта. В этой статье разберёмся, как автоматизировать процесс удаления старых изображений в WordPress, чтобы поддерживать медиатеку в чистоте и оптимальном состоянии.
Почему важно удалять старые изображения в WordPress
При загрузке изображений WordPress создаёт несколько копий разного размера, а после удаления постов или замены картинок в медиатеке остаются «мусорные» файлы. Со временем это значительно увеличивает объём дискового пространства и замедляет резервное копирование. Кроме того, большое количество неиспользуемых файлов усложняет поиск нужных медиа.
Удаление старых изображений вручную — трудоёмкий и рискованный процесс, так как можно случайно удалить нужные файлы. Поэтому автоматизация станет оптимальным решением.
Определение старых изображений: критерии выбора
Для автоматического удаления требуется определить, какие изображения считать старыми и неиспользуемыми. Обычно применяют следующие критерии:
- Дата загрузки — например, удалить файлы старше 1 года.
- Неиспользование — изображения, которые не привязаны к активным постам, страницам или медиаэлементам.
- Отсутствие в контенте — файлы, на которые нет ссылок в базе данных.
Комбинация этих условий позволяет безопасно очистить медиатеку от ненужных файлов.
Использование плагинов для автоматического удаления изображений
Для упрощения задачи можно воспользоваться готовыми плагинами. Вот несколько полезных вариантов:
1. Media Cleaner
Один из самых популярных инструментов для поиска и удаления неиспользуемых медиафайлов. Плагин анализирует базу данных и контент, выявляет «мусор» и предлагает безопасно удалить или переместить файлы.
Преимущества Media Cleaner:
- Поддержка сторонних плагинов и билдов.
- Интеграция с WPML и WooCommerce.
- Режим тестирования файлов перед удалением.
2. WP-Optimize
Помимо очистки базы данных, плагин содержит функцию оптимизации медиа — удаление неиспользуемых изображений и миниатюр.
WP-Optimize позволяет выполнять задания по расписанию, что удобно для автоматизации процесса.
3. Clearfy Pro
Плагин для комплексной оптимизации WordPress, в том числе умеет находить и удалять неиспользуемые медиафайлы. Хорошо интегрируется с другими инструментами WPSHOP, что делает его отличным выбором для сайтов с большим количеством контента.
Пример кода для автоматического удаления старых изображений
Если вы предпочитаете минимизировать использование плагинов, можно реализовать автоматическое удаление с помощью кастомного кода. Ниже представлен пример функции, которая удаляет изображения, не привязанные к постам и загруженные более 180 дней назад.
function wpabout_delete_old_unused_images() {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-180 days'));
// Получаем ID вложений (изображений), загруженных до даты
$attachments = $wpdb->get_col( $wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' AND post_date < %s",
$date_threshold
));
foreach ( $attachments as $attachment_id ) {
// Проверяем, используется ли вложение в других постах
$used = $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) FROM $wpdb->postmeta WHERE meta_value = %d",
$attachment_id
));
if ( $used == 0 ) {
// Удаляем вложение и все его размеры
wp_delete_attachment( $attachment_id, true );
}
}
}
// Запускаем функцию раз в сутки через WP-Cron
if ( ! wp_next_scheduled( 'wpabout_daily_image_cleanup' ) ) {
wp_schedule_event( time(), 'daily', 'wpabout_daily_image_cleanup' );
}
add_action( 'wpabout_daily_image_cleanup', 'wpabout_delete_old_unused_images' );Этот код:
- Находит все изображения старше 180 дней.
- Проверяет, не используется ли изображение в метаданных других постов.
- Удаляет неиспользуемые изображения с диска и из базы данных.
- Автоматически запускается каждый день через WP-Cron.
Обратите внимание, что перед внедрением такого решения рекомендуется сделать полный бэкап сайта и базы данных.
Дополнительные советы по работе с медиатекой
Оптимизация изображений перед загрузкой
Перед загрузкой на сайт лучше оптимизировать изображения с помощью плагинов, например, Imagify или ShortPixel — это уменьшит размер файлов без потери качества и снизит нагрузку.
Использование формата WebP
Поддержка формата WebP значительно улучшит скорость загрузки. Плагины Clearfy Pro и OmniVideo из набора WPSHOP умеют автоматически конвертировать изображения в WebP на лету.
Регулярный мониторинг и очистка
Настройте автоматические отчёты и периодическую очистку медиатеки, чтобы не допускать накопления «мусора».
Для удобного управления медиа можно использовать плагин Clearfy Pro — он помогает оптимизировать сайт и удалять ненужные файлы.
Выводы
Автоматизация удаления старых и неиспользуемых изображений — важный шаг к поддержанию здоровой и быстрой WordPress-системы. Используя готовые решения или кастомный код, вы сможете существенно сэкономить место на сервере и ускорить работу сайта.
Не забывайте делать резервные копии перед массовым удалением и тщательно тестировать все изменения в безопасной среде.