В процессе работы WordPress и установленных плагинов на сервере скапливаются временные файлы: логи, кэш, временные загрузки, резервные копии и другие данные, которые со временем занимают значительное место и могут замедлять работу сайта. В этой статье мы подробно рассмотрим, как настроить автоматическое удаление временных файлов, чтобы поддерживать чистоту и скорость вашего WordPress-сайта.
Что такое временные файлы в WordPress и зачем их удалять
Временные файлы — это файлы, которые создаются системой или плагинами для временного хранения данных. Например, это могут быть:
- Файлы кэша (object-cache, page-cache, transient cache)
- Временные файлы загрузок (upload tmp)
- Логи ошибок и отладки
- Резервные копии, сделанные плагинами резервного копирования
- Временные файлы обновлений
Если эти файлы не удалять, они будут занимать всё больше места на диске и могут вызвать проблемы с производительностью и даже привести к исчерпанию дискового пространства.
Как определить, какие временные файлы можно безопасно удалять
Первым шагом нужно понять, какие именно временные файлы создаёт ваша установка WordPress и плагины. Для этого:
- Подключитесь к серверу через FTP или SSH.
- Изучите папки
wp-content/uploads,wp-content/cache,wp-content/backups(если есть), а также папкуwp-content/pluginsна наличие временных файлов. - Проверьте плагины, которые создают кэш или резервные копии, и ознакомьтесь с их документацией по очистке.
Важно не удалять файлы, которые необходимы для работы сайта, поэтому тщательно тестируйте любые действия на тестовом стенде.
Автоматизация удаления временных файлов с помощью плагинов WordPress
Для удобства можно использовать готовые плагины, которые умеют очищать временные файлы по расписанию:
- WP-Optimize — позволяет удалять кэш, очищать базу данных и удалять временные файлы.
- Advanced Database Cleaner — фокусируется на очистке базы и кэша, включая временные данные.
- Delete Expired Transients — автоматически удаляет просроченные transient-данные.
Настройте расписание очистки в админке плагина, чтобы процесс проходил без вашего участия.
Пример настройки WP-Optimize для автоматической очистки
После установки WP-Optimize перейдите в раздел "Планировщик" и активируйте автоматическую очистку. Выберите, какие именно данные удалять (кэш, старые ревизии, спам-комментарии, transient-данные) и задайте интервал (например, раз в неделю).
Реализация автоматического удаления временных файлов через WP-Cron и кастомный код
Если вы хотите более гибко контролировать процесс, можно написать собственный код для удаления конкретных временных файлов и запускать его по расписанию через WP-Cron.
Пример функции для удаления файлов из определённой папки
function wptour_delete_temp_files() {
$upload_dir = wp_upload_dir();
$temp_dir = $upload_dir['basedir'] . '/temp'; // Папка с временными файлами
if ( ! is_dir( $temp_dir ) ) {
return;
}
$files = glob( $temp_dir . '/*' );
foreach ( $files as $file ) {
if ( is_file( $file ) && filemtime( $file ) < strtotime('-7 days') ) {
unlink( $file );
}
}
}
Эта функция удаляет все файлы в папке wp-content/uploads/temp, которым больше 7 дней.
Добавление WP-Cron задачи для регулярного запуска
function wptour_schedule_temp_files_cleanup() {
if ( ! wp_next_scheduled( 'wptour_daily_temp_cleanup' ) ) {
wp_schedule_event( time(), 'daily', 'wptour_daily_temp_cleanup' );
}
}
add_action( 'wp', 'wptour_schedule_temp_files_cleanup' );
add_action( 'wptour_daily_temp_cleanup', 'wptour_delete_temp_files' );
Этот код создаёт ежедневную задачу, которая запускает удаление временных файлов.
Удаление временных файлов кэша и transient-данных из базы данных
Временные данные могут храниться не только в файлах, но и в базе данных. Transient API WordPress хранит временные данные с датой истечения. Иногда они не удаляются автоматически.
Функция для удаления всех просроченных transient-данных
function wptour_delete_expired_transients() {
global $wpdb;
$time = current_time( 'mysql' );
$expired = $wpdb->get_col( $wpdb->prepare(
"SELECT option_name FROM $wpdb->options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%' "
) );
foreach ( $expired as $transient ) {
$transient_name = str_replace( '_transient_', '', $transient );
if ( false === get_transient( $transient_name ) ) {
delete_transient( $transient_name );
}
}
}
Эту функцию можно вызвать по расписанию аналогично примеру выше.
Рекомендации и лучшие практики для очистки временных файлов
При организации автоматической очистки временных файлов следуйте таким рекомендациям:
- Всегда делайте резервные копии сайта и базы данных перед внедрением автоматической очистки.
- Тестируйте скрипты на локальном или тестовом сервере, чтобы избежать случайного удаления нужных данных.
- Настраивайте интервалы очистки в зависимости от активности сайта — для больших проектов лучше чаще.
- Используйте логи для отслеживания работы очистки — это поможет выявить ошибки.
- Совмещайте очистку файлов и базы данных для максимальной эффективности.