Как удалить неактуальные transienty в WordPress и оптимизировать кэш

Transienty в WordPress — это временные данные, которые используются для кэширования результатов различных запросов и операций. Они помогают ускорить загрузку страниц и снизить нагрузку на сервер, но со временем некоторые transienty могут устаревать и оставаться в базе данных, занимая место и замедляя работу сайта. В этой статье разберёмся, как эффективно удалять неактуальные transienty в WordPress, используя как готовые плагины, так и собственные функции.

Что такое transienty и зачем их удалять? Обзор ключевых понятий

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

Однако transienty с истёкшим сроком действия не всегда автоматически удаляются из базы данных. Это приводит к накоплению «мусора» и увеличению размера таблиц базы данных, что негативно сказывается на производительности сайта и усложняет резервное копирование.

Поэтому регулярная очистка устаревших transientов — важный элемент поддержания здоровья WordPress.

Как посмотреть и управлять transienty вручную через базу данных

Transienty хранятся в таблице wp_options (префикс может отличаться). В базе они представлены как пары ключ-значение, где ключи начинаются с _transient_ или _transient_timeout_.

Для просмотра всех transient записей можно выполнить SQL-запрос:

SELECT option_name, option_value FROM wp_options WHERE option_name LIKE '_transient_%';

Чтобы удалить устаревшие transient, нужно удалить записи с ключами _transient_ и соответствующие _transient_timeout_, у которых время истекло. Например:

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name IN (
  SELECT option_name FROM wp_options 
  WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP()
);

Однако такой запрос может быть сложным и не всегда удобным для регулярного использования.

Автоматизация удаления устаревших transient с помощью PHP-функций в WordPress

Вы можете добавить в файл functions.php вашей темы или в собственный плагин функцию, которая будет удалять все просроченные transienty. Пример функции для wpset.ru:

function wpset_delete_expired_transients() {
    global $wpdb;
    $time = time();
    // Получаем все transient_timeout, срок которых прошел
    $expired = $wpdb->get_col( $wpdb->prepare(
        "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_%' AND option_value < %d",
        $time
    ) );

    if ( ! empty( $expired ) ) {
        foreach ( $expired as $timeout_key ) {
            // Формируем ключ transient по timeout ключу
            $transient_key = str_replace( '_transient_timeout_', '_transient_', $timeout_key );
            // Удаляем transient и timeout
            delete_option( $timeout_key );
            delete_option( $transient_key );
        }
    }
}

// Можно запускать вручную или через cron
// wpset_delete_expired_transients();

Эту функцию можно запускать периодически через WP-Cron или вручную для очистки базы.

Как настроить WP-Cron для регулярной очистки transient

Добавьте в functions.php следующий код для планирования задачи:

if ( ! wp_next_scheduled( 'wpset_cleanup_transients' ) ) {
    wp_schedule_event( time(), 'daily', 'wpset_cleanup_transients' );
}

add_action( 'wpset_cleanup_transients', 'wpset_delete_expired_transients' );

Это позволит автоматически удалять устаревшие transient каждый день.

Использование плагинов для управления transient в WordPress

Если вы предпочитаете готовые решения, обратите внимание на следующие плагины:

  • Transient Manager — позволяет просматривать, удалять и управлять transient через админку.
  • Clearfy Pro — включает инструменты для оптимизации базы и управления transient, совмещая очистку с другими функциями оптимизации.
  • WP-Optimize — автоматизирует очистку transient вместе с другими оптимизациями базы данных.

В частности, Clearfy Pro можно приобрести с официального сайта, где реализованы удобные инструменты для удаления временных данных и оптимизации работы сайта.

Практические советы по работе с transient для разработчиков и администраторов

1. Минимизируйте время жизни transient. Чем меньше TTL (time to live), тем реже устаревшие данные будут накапливаться.

2. Проверяйте, где и зачем создаются transienty. Избегайте создания transient для редко используемых данных.

3. Регулярно очищайте базу — с помощью кода или плагинов, чтобы поддерживать производительность.

4. Используйте объектный кэш (например, Redis) вместе с transienty для ускорения доступа к данным.

Пример создания transient с правильным временем жизни

function wpset_get_expensive_data() {
    $cache_key = 'wpset_expensive_data';
    $data = get_transient( $cache_key );

    if ( false === $data ) {
        // Дорогая операция
        $data = 'Результат долгого запроса или вычисления';

        // Сохраняем transient на 1 час
        set_transient( $cache_key, $data, HOUR_IN_SECONDS );
    }

    return $data;
}

Выводы и рекомендации по удалению transient в WordPress

Transienty — мощный инструмент кеширования, но при неправильном использовании они могут привести к засорению базы данных и замедлению сайта. Регулярная очистка неактуальных transient с помощью кода или плагинов, а также правильное использование TTL помогут поддерживать сайт быстрым и стабильным.

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

Как удалить неиспользуемые таксономии в WordPress без плагинов
06.01.2026
Автоматический импорт продуктов из CSV в WooCommerce с помощью кода
24.12.2025
WooCommerce: автоматическое удаление неактивных вариаций товаров
02.06.2026
Как использовать REST API для создания и обновления записей в WordPress
16.03.2026
Как удалить все неактивные пользователи в WordPress с помощью кода
10.01.2026