Как создать постоянные содержимые в WordPress с помощью Transient Cache

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

Что такое Transient Cache и зачем его использовать?

Transient Cache — это механизм кеширования в WordPress, позволяющий временно сохранять данные с указанием срока жизни (expiration time). Это помогает уменьшить количество запросов к базе данных или внешним API, ускорить загрузку страниц и снизить нагрузку на сервер.

По умолчанию transient-данные удаляются автоматически после истечения срока, но иногда нужно хранить данные дольше или даже без срока. Такой подход помогает, например, сохранять результаты тяжёлых вычислений или запроса к API без необходимости их постоянного пересчёта.

Ограничения и особенности transient cache

  • Данные сохраняются в таблице wp_options (или аналогичной в префиксе).
  • Для хранения с нулевым сроком жизни transient считается бессрочным.
  • Некоторые хостинги могут очищать transient-данные автоматически.
  • Для оптимальной работы важно контролировать очистку устаревших транзиентов.

Как создать "постоянный" transient без срока жизни в WordPress

Чтобы сохранить transient без автоматического удаления, достаточно установить время жизни равным 0. Вот функция, которая создаёт такой transient:

function wpcore_set_permanent_transient($key, $value) {
    set_transient($key, $value, 0); // 0 — бессрочный transient
}

Использование:

wpcore_set_permanent_transient('my_permanent_data', array('foo' => 'bar'));

Получить его можно стандартной функцией get_transient:

$data = get_transient('my_permanent_data');

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

Удаление "постоянного" transient

Чтобы удалить такой transient, используется функция:

delete_transient('my_permanent_data');

Важно контролировать количество таких данных, чтобы не засорять базу.

Пример практического использования persistent transient cache

Рассмотрим пример, когда необходимо сохранить результаты внешнего API-запроса, который обновляется не чаще одного раза в месяц.

function wpcore_get_external_api_data() {
    $cache_key = 'wpcore_external_api_data';
    $data = get_transient($cache_key);
    
    if ($data === false) {
        // Выполняем запрос к API
        $response = wp_remote_get('https://api.example.com/data');
        if (is_wp_error($response)) {
            return null; // Обработка ошибки
        }
        $body = wp_remote_retrieve_body($response);
        $data = json_decode($body, true);

        if ($data) {
            // Сохраняем данные с временем жизни 30 дней
            set_transient($cache_key, $data, 30 * DAY_IN_SECONDS);
        }
    }
    return $data;
}

Если же данные менять не нужно, можно сохранить их без срока, а обновлять вручную, например, через CRON или админ-панель.

Плагины для работы с Transient Cache и оптимизации кеширования

Для более удобного управления кешем и очистки transient-данных можно использовать плагины:

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

Рекомендации по оптимизации и безопасности при использовании transient cache

При работе с transient важно учитывать следующие моменты:

  • Не храните в transient слишком большие объёмы данных — это может замедлить запросы к базе.
  • Используйте уникальные и понятные ключи, чтобы избежать конфликтов.
  • Если данные чувствительны, рассмотрите шифрование перед сохранением.
  • Регулярно очищайте устаревшие или неиспользуемые transient, чтобы не загромождать базу данных.
  • Используйте плагин Clearfy Pro для автоматической очистки и оптимизации.

Автоматическая очистка устаревших transient с помощью WP-Cron

Если требуется реализовать собственную очистку transient, можно создать CRON-задачу, которая будет удалять ненужные ключи:

function wpcore_delete_old_transients() {
    global $wpdb;
    $time = time();
    $transients = $wpdb->get_col($wpdb->prepare(
        "SELECT option_name FROM $wpdb->options WHERE option_name LIKE '_transient_timeout_%' AND option_value < %d",
        $time
    ));

    foreach ($transients as $timeout_key) {
        $transient_key = str_replace('_transient_timeout_', '', $timeout_key);
        delete_transient($transient_key);
    }
}

// Запуск через CRON
if (!wp_next_scheduled('wpcore_cron_cleanup')) {
    wp_schedule_event(time(), 'daily', 'wpcore_cron_cleanup');
}
add_action('wpcore_cron_cleanup', 'wpcore_delete_old_transients');

Заключение по использованию persistent transient cache в WordPress

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

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

Как использовать REST API для создания настроек в WordPress
08.12.2025
WooCommerce: как автоматически удалять отменённые и завершённые заказы по дате без плагинов
09.05.2026
WooCommerce: как автоматически удалять старые нераскрытые заказы по дате
19.05.2026
WooCommerce: как автоматически удалять заказы по статусу и дате без плагинов
02.05.2026
Lazy loading для WordPress: как ускорить загрузку страниц и улучшить UX
01.02.2026