Как автоматизировать удаление старого transient в WordPress

|

Transient API в WordPress — мощный инструмент для временного кеширования данных с установленным временем жизни. Однако зачастую старые или устаревшие transient остаются в базе данных, перегружая её и замедляя работу сайта. В этой статье мы подробно разберём, как правильно автоматизировать удаление устаревших transient, чтобы поддерживать базу данных в чистоте и улучшать производительность.

Что такое transient и почему их нужно удалять

Transient — это временные данные, сохраняющиеся в базе данных WordPress с определённым временем жизни (TTL). Они используются для кеширования запросов API, результатов сложных вычислений, данных с внешних сервисов и т.д. После истечения TTL transient считается устаревшим и должен быть удалён.

Если не удалять просроченные transient, они накапливаются в таблице wp_options, увеличивая размер базы и замедляя запросы. Особенно это критично для сайтов с большим трафиком и множеством плагинов, активно использующих transient.

Поэтому важно автоматизировать очистку старых transient с помощью WP-Cron или сторонних плагинов.

Как вручную удалить старые transient через SQL-запрос

Для проверки и удаления устаревших transient можно использовать SQL-запросы к базе. В таблице wp_options transient хранятся с ключами, начинающимися на _transient_ или _transient_timeout_. Вторая группа содержит время истечения TTL.

Пример запроса для удаления всех просроченных transient:

DELETE o1 FROM wp_options o1
INNER JOIN wp_options o2 ON o1.option_name = REPLACE(o2.option_name, '_timeout', '')
WHERE o2.option_name LIKE '_transient_timeout_%'
AND o2.option_value < UNIX_TIMESTAMP();

Этот запрос удалит все transient, у которых время истечения прошло. Однако выполнять его регулярно вручную неудобно, поэтому рассмотрим автоматизацию.

Автоматизация удаления устаревших transient с помощью WP-Cron

WP-Cron — встроенный механизм планировщика задач в WordPress. Мы можем создать функцию, которая будет запускаться по расписанию и очищать просроченные transient.

Регистрация и реализация функции удаления

Добавьте следующий код в файл functions.php вашей темы или в собственный плагин:

function wpdetect_clear_expired_transients() {
    global $wpdb;
    $time = time();
    $transient_timeout_name = $wpdb->esc_like('_transient_timeout_') . '%';

    // Получаем все устаревшие transient
    $expired = $wpdb->get_col($wpdb->prepare(
        "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s AND option_value < %d",
        $transient_timeout_name,
        $time
    ));

    if (empty($expired)) {
        return;
    }

    foreach ($expired as $timeout_name) {
        $transient_name = str_replace('_transient_timeout_', '_transient_', $timeout_name);
        // Удаляем transient и его timeout
        delete_option($transient_name);
        delete_option($timeout_name);
    }
}

// Регистрируем событие при активации темы или плагина
function wpdetect_schedule_transient_cleanup() {
    if (!wp_next_scheduled('wpdetect_transient_cleanup_hook')) {
        wp_schedule_event(time(), 'hourly', 'wpdetect_transient_cleanup_hook');
    }
}
add_action('wp', 'wpdetect_schedule_transient_cleanup');

// Хук для очистки
add_action('wpdetect_transient_cleanup_hook', 'wpdetect_clear_expired_transients');

Объяснение:

Использование плагинов для автоматической очистки transient

Если вы не хотите писать код, можно использовать плагины, которые управляют transient и кешем. Вот несколько полезных:

Для большинства сайтов достаточно встроенного решения на WP-Cron, но при сложных сценариях и большом трафике стоит рассмотреть специализированные плагины.

Дополнительные рекомендации по работе с transient

Чтобы избежать накопления устаревших transient, следуйте рекомендациям:

Заключение

Автоматизация удаления старого transient — важный этап поддержки производительности WordPress-сайта. Используя WP-Cron и приведённый пример кода, вы легко создадите надёжный механизм очистки, который избавит базу данных от мусора и ускорит работу сайта. В качестве альтернативы рассмотрите плагины, такие как Clearfy Pro, для более комплексной оптимизации.

Как использовать хуки для оптимизации WordPress
08.12.2025
Как автоматизировать удаление старого медиафайла в WordPress
15.03.2026
Как создать автоматический снимок базы данных WordPress с помощью WPDetect
01.01.2026
Как автоматизировать удаление старого transient в WordPress
21.03.2026
Как автоматизировать удаление старого transient в WordPress
12.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее