В процессе эксплуатации сайта на WordPress скапливается множество временных, устаревших и ненужных файлов: логи, резервные копии, кеш, файлы загружаемых медиа и другие. Если не контролировать их удаление, они могут занимать значительное место на сервере и замедлять работу сайта. В этой статье разберём, как организовать автоматическое удаление старых файлов в WordPress, используя системные задачи (cron), популярные плагины и собственный код.
Почему важно удалять старые файлы на WordPress
С течением времени на сервере накапливаются временные файлы, бэкапы, логи плагинов и темы, а также устаревшие медиафайлы, которые уже не используются. Они могут:
- Занимать дисковое пространство, что особенно критично на хостингах с ограничениями.
- Замедлять резервное копирование и сканирование безопасности.
- Вызывать конфликты и ошибки при обновлениях.
Автоматизация удаления таких файлов позволяет поддерживать чистоту сервера и оптимизировать работу сайта.
Как настроить автоматическое удаление через WP-Cron
WordPress использует собственную систему планировщика задач — WP-Cron. Она позволяет запускать PHP-функции по расписанию, что удобно для очистки старых файлов.
Создание функции для удаления файлов
Для начала создадим функцию, которая будет удалять файлы старше определённого времени из заданной директории. Например, удалим все файлы старше 7 дней из папки wp-content/uploads/temp.
function wpcode_delete_old_files() {
$dir = WP_CONTENT_DIR . '/uploads/temp';
$files = glob( $dir . '/*' );
$now = time();
$days_to_keep = 7;
foreach ( $files as $file ) {
if ( is_file( $file ) ) {
$file_time = filemtime( $file );
if ( $now - $file_time > $days_to_keep * DAY_IN_SECONDS ) {
unlink( $file );
}
}
}
}Регистрация задачи в WP-Cron
Теперь зарегистрируем событие, которое будет запускать эту функцию раз в сутки.
function wpcode_schedule_delete_old_files() {
if ( ! wp_next_scheduled( 'wpcode_delete_old_files_event' ) ) {
wp_schedule_event( time(), 'daily', 'wpcode_delete_old_files_event' );
}
}
add_action( 'wp', 'wpcode_schedule_delete_old_files' );
add_action( 'wpcode_delete_old_files_event', 'wpcode_delete_old_files' );Этот код нужно добавить в файл functions.php вашей темы или подключить через плагин для пользовательских функций.
Использование системного cron для более надёжного выполнения
WP-Cron запускается при обращении к сайту, поэтому если трафик низкий, задачи могут не выполняться вовремя. Для повышения надёжности лучше использовать системный cron на сервере.
Пример команды для добавления в crontab (запуск раз в день):
wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1Поменяйте https://your-site.ru на адрес вашего сайта. Это запустит WP-Cron принудительно.
Плагины для автоматической очистки старых файлов
Если не хочется писать код, можно использовать плагины с похожим функционалом.
WP Clean Up
Плагин позволяет удалять временные файлы, ревизии постов, спам и многое другое. Есть функция удаления файлов по возрасту.
Media Cleaner
Этот плагин поможет найти и удалить неиспользуемые медиафайлы, которые давно не используются на сайте.
WP-Optimize
Помимо оптимизации базы данных, этот плагин имеет функции очистки кеша и удаления ненужных файлов.
Все эти плагины можно найти и скачать с официального каталога WordPress или на WPSHOP.RU.
Дополнительные советы по безопасности и эффективности
Проверяйте права доступа к папкам
Убедитесь, что у скриптов есть права на удаление файлов в нужных директориях. Обычно достаточно прав 755 на папки и 644 на файлы.
Логируйте процесс удаления
Чтобы отслеживать, какие файлы были удалены, можно добавить логирование в функцию удаления:
function wpcode_delete_old_files_with_log() {
$dir = WP_CONTENT_DIR . '/uploads/temp';
$files = glob( $dir . '/*' );
$now = time();
$days_to_keep = 7;
$log_file = WP_CONTENT_DIR . '/delete_files_log.txt';
foreach ( $files as $file ) {
if ( is_file( $file ) ) {
$file_time = filemtime( $file );
if ( $now - $file_time > $days_to_keep * DAY_IN_SECONDS ) {
if ( unlink( $file ) ) {
file_put_contents( $log_file, date('Y-m-d H:i:s') . " Deleted: $file\n", FILE_APPEND );
}
}
}
}
}Используйте плагины с осторожностью
Перед установкой плагинов для удаления файлов обязательно создавайте резервные копии сайта и базы данных, чтобы избежать потери важных данных.
Выводы и рекомендации
Автоматическое удаление старых файлов в WordPress — важный аспект поддержания производительности и безопасности сайта. Лучший метод зависит от задач и возможностей хостинга: WP-Cron подходит для большинства случаев, системный cron — для более точного управления, а плагины — для пользователей без навыков программирования.
Используйте приведённые примеры кода как основу для своих решений и адаптируйте под конкретные нужды проекта.