Медиа файлы — изображения, видео, документы — занимают значительное пространство на сервере вашего WordPress сайта. Со временем в библиотеке накапливаются устаревшие или неиспользуемые файлы, которые не удаляются автоматически. Это приводит к разрастанию базы данных и увеличению занимаемого дискового пространства, что негативно сказывается на производительности и стоимости хостинга.
Почему важно удалять старые медиа файлы в WordPress
Удаление неиспользуемых медиа файлов помогает:
- Освободить дисковое пространство на сервере и ускорить бэкапы.
- Уменьшить размер базы данных, что положительно влияет на скорость сайта.
- Упростить организацию медиа библиотеки и снизить риск ошибок при загрузке контента.
Однако делать это вручную неудобно и рискованно — можно случайно удалить важные файлы. Лучший подход — автоматизировать процесс с помощью плагинов и кастомных скриптов.
Плагины для автоматического удаления неиспользуемых медиа файлов
Среди популярных и проверенных решений стоит выделить несколько плагинов:
1. Media Cleaner
Один из самых известных плагинов для поиска и удаления неиспользуемых файлов. Он анализирует базу данных и контент сайта, выявляя медиа, которые не используются ни в одном посте, странице или виджете.
Преимущества Media Cleaner:
- Поддержка различных типов контента (посты, страницы, пользовательские типы).
- Работа с плагинами-строителями, такими как Elementor.
- Отложенная очистка — сначала файлы перемещаются в карантин.
Минусы — в бесплатной версии некоторые функции ограничены.
Скачать и узнать подробности можно на официальной странице плагина.
2. WP-Optimize (модуль медиа)
WP-Optimize — комплексный плагин для оптимизации базы данных и кеширования, который в последних релизах добавил функцию удаления неиспользуемых медиа файлов.
Преимущества:
- Объединяет оптимизацию базы данных и очистку медиа.
- Простой интерфейс и надежность.
Этот плагин подходит, если вы хотите комплексно поддерживать сайт в хорошем состоянии.
Как написать кастомный скрипт для автоматического удаления неиспользуемых медиа файлов
Если вы хотите гибко настроить процесс под себя, можно написать функцию, которая будет запускаться по расписанию (через wp_cron) и удалять медиа, не привязанные к записям и страницам.
Пример простого скрипта:
function wptask_remove_unused_attachments() {
global $wpdb;
// Получаем все ID вложений
$attachment_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
foreach ($attachment_ids as $id) {
// Проверяем связи с постами
$parent_id = get_post_field('post_parent', $id);
if (!$parent_id) {
// Проверяем использование в контенте
$url = wp_get_attachment_url($id);
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($url) . '%'
));
if ($count == 0) {
// Удаляем вложение без возможности восстановления
wp_delete_attachment($id, true);
}
}
}
}
// Запускаем функцию раз в сутки
if (!wp_next_scheduled('wptask_daily_attachment_cleanup')) {
wp_schedule_event(time(), 'daily', 'wptask_daily_attachment_cleanup');
}
add_action('wptask_daily_attachment_cleanup', 'wptask_remove_unused_attachments');В этом коде функция wptask_remove_unused_attachments ищет вложения без родительских постов и неиспользуемые в контенте, после чего удаляет их.
Важно: перед запуском такого скрипта сделайте резервную копию сайта, чтобы избежать потери важных данных.
Как интегрировать автоматическое удаление с WPShop
Если вы используете плагин Clearfy Pro, он предлагает расширенные инструменты для оптимизации работы WordPress, включая очистку медиа и базы данных.
Clearfy Pro позволяет настроить автоматические задачи по удалению мусора, которые можно дополнить кастомным скриптом выше. Это поможет держать сайт в отличной форме без ручных операций.
Рекомендации по безопасности и тестированию
Автоматическое удаление файлов — потенциально опасная операция, поэтому придерживайтесь следующих правил:
- Всегда делайте полные резервные копии сайта и базы данных перед внедрением автоматизации.
- Тестируйте скрипты и плагины на тестовом сервере или локальной среде.
- Используйте функцию перемещения в карантин (если есть) перед окончательным удалением.
- Периодически проверяйте логи и отчеты о выполнении автоматизации.
Заключение
Автоматизация удаления старых медиа файлов — важный шаг в поддержке производительности и чистоты WordPress сайта. Используя готовые плагины и/или кастомные решения, вы можете существенно упростить рутинные задачи и сохранить ресурсы сервера. Наш пример кода поможет быстро запустить собственный процесс очистки, а интеграция с Clearfy Pro из WPShop сделает процесс ещё удобнее и безопаснее.