В процессе работы с WordPress медиабиблиотека часто накапливает множество файлов и папок, которые перестали использоваться и занимают лишнее место на сервере. Если вы ведёте крупный проект или сайт с большим количеством загруженных медиафайлов, то своевременное удаление неактуальных данных поможет не только сэкономить место, но и ускорить работу сайта и резервное копирование.
Почему важно удалять старые файлы и папки из медиабиблиотеки WordPress
Большинство пользователей привыкли удалять медиафайлы через интерфейс WordPress, но этот способ не всегда полностью очищает сервер от неиспользуемых данных. Некоторые плагины, темы или кастомные решения создают свои папки и хранят там временные или кэшированные файлы. Если не следить за этим, на сервере будут копиться мусорные данные.
Удаление старых файлов помогает снизить нагрузку на диск, улучшить производительность и упростить бэкапы. Кроме того, это повышает безопасность сайта — меньше данных, меньше потенциальных уязвимостей.
В этой статье рассмотрим несколько способов решения задачи — как вручную и автоматизировано удалять неиспользуемые файлы и папки из медиабиблиотеки с примерами кода и рекомендациями по плагинам.
Как найти неиспользуемые файлы и папки в медиабиблиотеке
Первый шаг — определить, какие файлы реально не используются в контенте сайта. Для этого можно использовать несколько подходов.
Использование плагина Media Cleaner
Плагин Media Cleaner — одно из лучших решений для анализа и очистки медиабиблиотеки. Он сканирует базу данных и файлы на сервере, выявляет неиспользуемые медиафайлы и предлагает удобный интерфейс для их удаления.
Плагин умеет работать с разными типами контента (посты, страницы, кастомные типы записей) и поддерживает работу с плагинами, которые могут хранить медиафайлы нестандартным образом.
Для установки достаточно перейти в админку, найти Media Cleaner и активировать. После запуска анализа вы получите список кандидатов на удаление.
Ручной поиск через базу данных и сервер
Если вы не хотите использовать плагин, то можно сделать анализ самостоятельно. Для начала выгрузите список всех медиафайлов из таблиц базы данных — обычно это wp_posts с типом записи attachment. Затем сравните с файлами в папке wp-content/uploads.
Для этого можно использовать простой PHP-скрипт, например, функцию wpall_get_unused_media_files:
function wpall_get_unused_media_files() {
$uploads = wp_upload_dir();
$files = scandir($uploads['basedir']);
$used_files = [];
$args = [
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
'fields' => 'ids'
];
$attachments = get_posts($args);
foreach ($attachments as $attachment_id) {
$file = get_attached_file($attachment_id);
if ($file) {
$used_files[] = basename($file);
}
}
$unused = [];
foreach ($files as $file) {
if ($file === '.' || $file === '..') continue;
if (!in_array($file, $used_files)) {
$unused[] = $uploads['basedir'] . '/' . $file;
}
}
return $unused;
}Этот код позволит получить список файлов без привязки к записям. Их можно проверить и удалить вручную.
Автоматическое удаление неиспользуемых папок и файлов — примеры кода
Для автоматизации удаления можно написать функцию, которая будет запускаться по расписанию через WP-Cron и удалять устаревшие файлы.
Пример функции wpall_delete_unused_media_files с удалением файлов старше 90 дней:
function wpall_delete_unused_media_files() {
$unused_files = wpall_get_unused_media_files();
$now = time();
$days_limit = 90 * DAY_IN_SECONDS;
foreach ($unused_files as $file_path) {
if (file_exists($file_path)) {
$file_time = filemtime($file_path);
if (($now - $file_time) > $days_limit) {
unlink($file_path);
}
}
}
}
// Добавляем задачу в WP-Cron
if (!wp_next_scheduled('wpall_delete_unused_media_files_hook')) {
wp_schedule_event(time(), 'daily', 'wpall_delete_unused_media_files_hook');
}
add_action('wpall_delete_unused_media_files_hook', 'wpall_delete_unused_media_files');Этот код запускает проверку каждый день и удаляет неиспользуемые файлы, если они не менялись более 90 дней. Настройте интервал и условия под свой проект.
Как безопасно удалить папки с медиафайлами
WordPress по умолчанию хранит загруженные файлы в структуре по годам и месяцам (uploads/2023/06), но некоторые плагины создают свои папки. Чтобы удалить такие папки, нужно предварительно проверить, что в них нет файлов, используемых сайтом.
Рекомендуется сделать полную резервную копию сайта перед удалением. После этого можно использовать FTP или SSH для удаления пустых или неиспользуемых папок, либо написать скрипт, который проверит и удалит только пустые каталоги.
Пример функции для удаления пустых папок в wp-content/uploads:
function wpall_delete_empty_folders($dir) {
$is_empty = true;
foreach (scandir($dir) as $file) {
if ($file === '.' || $file === '..') continue;
$full_path = $dir . '/' . $file;
if (is_dir($full_path)) {
if (!wpall_delete_empty_folders($full_path)) {
$is_empty = false;
}
} else {
$is_empty = false;
}
}
if ($is_empty) {
rmdir($dir);
return true;
}
return false;
}
// Запуск очистки
$uploads = wp_upload_dir();
wpall_delete_empty_folders($uploads['basedir']);Этот рекурсивный вызов удалит пустые каталоги без риска удаления нужных данных.
Рекомендации по плагинам для очистки медиабиблиотеки и управления файлами
Кроме Media Cleaner, стоит обратить внимание на следующие плагины:
- WPGPT Clearfy Pro (ссылка Clearfy Pro) — помогает оптимизировать работу WordPress, включая управление кэшом и медиафайлами;
- Media Deduper — удаляет дублирующиеся медиафайлы, что также снижает нагрузку;
- WP-Optimize — комплексный инструмент для очистки базы данных и медиафайлов.
Используйте плагины с осторожностью — предварительно делайте бэкапы и проверяйте, что удаляемые файлы действительно не используются.
Как избежать проблем при удалении файлов и папок из медиабиблиотеки
Удаление медиафайлов может привести к битым ссылкам в статьях или на страницах. Поэтому перед удалением обязательно:
- Сделайте полную резервную копию сайта и базы данных;
- Проверьте, что файлы не используются в записях, виджетах или плагинах;
- Если используете автоматизацию, устанавливайте ограничения по времени, чтобы не удалять недавно добавленные файлы;
- Проверьте работу сайта после удаления, чтобы убедиться в отсутствии ошибок.
Если у вас есть свои кастомные папки с медиа, учтите их в логике удаления.
Выводы и практические советы по удалению старых файлов и папок WordPress
Удаление неиспользуемых файлов и папок из медиабиблиотеки — важная задача для поддержания производительности и безопасности WordPress сайта. Используйте плагин Media Cleaner для быстрого и удобного анализа, а для тонкой настройки автоматизации — собственные функции с WP-Cron.
Обязательно делайте резервные копии и проверяйте, что удаляемые данные не влияют на контент. Регулярная чистка медиабиблиотеки поможет сохранить ваш сайт быстрым и аккуратным.