Как удалить неиспользуемые transient'ы в WordPress для оптимизации сайта

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

Что такое transient'ы и зачем их очищать

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

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

  • Увеличению размера таблиц базы данных;
  • Замедлению запросов к базе;
  • Ошибкам при чтении устаревших transient'ов;
  • Общему снижению производительности сайта.

Удаление ненужных transient'ов — важный этап в техническом обслуживании WordPress.

Как найти неиспользуемые transient'ы в базе данных WordPress

Transient'ы хранятся в таблице wp_options (префикс может отличаться) с ключами вида _transient_{name} и _transient_timeout_{name}. Для поиска можно использовать SQL-запрос:

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

Этот запрос покажет все transient'ы и их время жизни. Чтобы отфильтровать устаревшие, можно проверить поле option_name, содержащие _transient_timeout_, и сравнить их option_value (таймстамп) с текущим временем.

Для удобства можно использовать следующий запрос, который покажет все просроченные transient'ы:

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

Эти transient'ы уже просрочены и могут быть удалены.

Пример скрипта для поиска и удаления просроченных transient'ов

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

function wpchecker_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 %s AND option_value < %d",
            '_transient_timeout_%',
            $time
        )
    );

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

    foreach ( $expired as $timeout_key ) {
        // Получаем имя transient'а
        $transient_name = str_replace('_transient_timeout_', '', $timeout_key);

        // Удаляем transient и его timeout
        delete_transient( $transient_name );
    }
}

// Запускаем функцию
wpchecker_delete_expired_transients();

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

Как автоматизировать очистку transient'ов с помощью WP-Cron

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

function wpchecker_schedule_transient_cleanup() {
    if (! wp_next_scheduled('wpchecker_cleanup_expired_transients') ) {
        wp_schedule_event(time(), 'daily', 'wpchecker_cleanup_expired_transients');
    }
}
add_action('wp', 'wpchecker_schedule_transient_cleanup');

add_action('wpchecker_cleanup_expired_transients', 'wpchecker_delete_expired_transients');

Этот код планирует ежедневное выполнение функции удаления устаревших transient'ов.

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

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

  • Transient Manager — позволяет просматривать, удалять и очищать transient'ы через админку WordPress. Удобно для быстрой диагностики.
  • Clearfy Pro — расширенный инструмент оптимизации, который включает управление transient'ами, а также очистку базы и другие полезные функции. Подробнее на wpshop.ru.

Использование таких плагинов подходит для пользователей, которые предпочитают графический интерфейс и дополнительные возможности оптимизации.

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

При работе с transient'ами стоит учитывать несколько важных моментов:

  • Всегда используйте функции WordPress (set_transient, get_transient, delete_transient) для управления transient'ами, чтобы избежать конфликтов и ошибок.
  • Для критичных данных не устанавливайте слишком большой срок жизни transient'а, чтобы не отображать устаревшую информацию.
  • Регулярно очищайте просроченные transient'ы, чтобы база не разрасталась.
  • При разработке плагинов или тем учитывайте, что transient'ы нужно удалять при деактивации или удалении плагина.

Пример создания и удаления transient'а с префиксом wpchecker

function wpchecker_set_custom_transient($key, $value, $expiration = 3600) {
    set_transient('wpchecker_' . $key, $value, $expiration);
}

function wpchecker_get_custom_transient($key) {
    return get_transient('wpchecker_' . $key);
}

function wpchecker_delete_custom_transient($key) {
    delete_transient('wpchecker_' . $key);
}

Такой подход помогает избежать конфликтов с другими плагинами и облегчает поиск transient'ов, которые созданы вашим кодом.

WooCommerce: как добавить и сохранить дополнительные поля в форме заказа
22.06.2026
Как удалить и заблокировать спам комментарии в WordPress
24.12.2025
Оптимизация базы данных WordPress: практические советы и примеры кода
21.11.2025
Как использовать WPCommunity для создания форума на WordPress
02.02.2026
Как удалить пустые термины таксономий в WordPress через PHP
06.04.2026