Со временем в медиабиблиотеке WordPress накапливается огромное количество файлов, многие из которых уже не используются на сайте. Это приводит к увеличению размера бэкапов, замедлению работы сайта и усложнению управления контентом. В этой статье мы подробно разберём, как найти и удалить старые медиа файлы в WordPress, используя как готовые плагины, так и собственные функции на PHP.
Почему важно удалять неиспользуемые медиа файлы
Медиабиблиотека WordPress может быстро разрастаться, особенно если регулярно добавлять изображения, видео и документы. Неиспользуемые файлы занимают место на сервере, замедляют процесс создания резервных копий и могут создавать проблемы при миграции сайта. Кроме того, большое количество лишних файлов усложняет поиск нужного контента.
Регулярная очистка медиатеки помогает поддерживать сайт в оптимальном состоянии и облегчает дальнейшее управление ресурсами.
Как определить, какие медиа файлы не используются
Определить неиспользуемые файлы вручную сложно, особенно на больших сайтах. Для этого можно использовать специальные плагины или написать собственный скрипт, который анализирует базу данных и HTML-код страниц.
Использование плагинов для поиска неиспользуемых медиа
- Media Cleaner — популярный плагин, который сканирует медиабиблиотеку и контент сайта, чтобы выявить файлы, не используемые в записях, страницах, виджетах и даже плагинах. Плагин позволяет безопасно удалить найденные файлы и предоставляет возможность создавать резервные копии.
- DNUI (Delete Not Used Image) — лёгкий плагин, который ищет неиспользуемые изображения и позволяет их массово удалять.
- WP-Optimize — комплексный плагин для оптимизации базы данных и медиатеки, включая удаление неиспользуемых файлов.
Все эти плагины доступны на WPSHOP.ru с удобной установкой и поддержкой.
Практическое решение: собственный скрипт для поиска и удаления неиспользуемых медиа файлов
Если вы предпочитаете более тонкий контроль или хотите автоматизировать процесс, можно использовать PHP-скрипт. Вот пример функции wpnews_find_unused_media(), которая ищет файлы, не связанные с записями и страницами.
function wpnews_find_unused_media() {
global $wpdb;
// Получаем все ID вложений
$attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment'");
$unused = [];
foreach ($attachments as $attachment_id) {
// Проверяем, используется ли вложение в контенте
$url = wp_get_attachment_url($attachment_id);
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_content LIKE %s",
'%' . $wpdb->esc_like($url) . '%'
));
if ($count == 0) {
$unused[] = $attachment_id;
}
}
return $unused;
}
// Пример вызова функции и удаления найденных файлов
$unused_files = wpnews_find_unused_media();
foreach ($unused_files as $file_id) {
wp_delete_attachment($file_id, true); // true — удалить файл физически
}
Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Важно сначала проверить список неиспользуемых файлов, чтобы случайно не удалить нужные медиа.
Как автоматизировать очистку медиатеки с помощью WP-Cron
Для регулярного удаления старых медиа можно настроить задачу WP-Cron, которая будет запускать функцию очистки по расписанию. Например, раз в месяц.
function wpnews_schedule_media_cleanup() {
if (!wp_next_scheduled('wpnews_monthly_media_cleanup')) {
wp_schedule_event(time(), 'monthly', 'wpnews_monthly_media_cleanup');
}
}
add_action('wp', 'wpnews_schedule_media_cleanup');
add_action('wpnews_monthly_media_cleanup', function() {
$unused_files = wpnews_find_unused_media();
foreach ($unused_files as $file_id) {
wp_delete_attachment($file_id, true);
}
});
Такое решение позволяет поддерживать медиатеку в чистоте без постоянного ручного контроля.
Рекомендации по безопасности и резервному копированию
Перед удалением любых файлов из медиатеки обязательно сделайте полное резервное копирование сайта и базы данных. Если вы используете плагины, выбирайте те, которые имеют функцию создания резервных копий перед удалением.
Для бэкапов отлично подойдут плагины, такие как WPBackup или решения из набора WPSHOP.ru.
Выводы и лучшие практики
Удаление старых медиа файлов — важная задача для поддержания производительности и удобства управления WordPress-сайтом. Используйте проверенные плагины, чтобы не допустить ошибок, или автоматизируйте процесс с помощью собственного кода и WP-Cron.
Регулярно анализируйте медиатеку, планируйте очистки и всегда делайте резервные копии перед серьёзными изменениями.