set_transient() / get_transient() — Cache temporário

Time Full Services Time Full Services
Tipo Performance
Nome do erro set_transient() / get_transient() — Cache temporário
Severidade Informativo
Desde WordPress 2.8
Descrição Armazena dados temporários no banco de dados (ou objeto cache) com tempo de expiração definido. Ideal para cachear resultados de APIs ou queries lentas.

Causa

Consultas externas ou queries complexas repetidas a cada page load degradam a performance. Transients permitem cachear resultados por tempo determinado.

Como resolver

Defina uma chave única e um tempo de expiração razoável. Sempre use get_transient() antes de executar a lógica pesada e salve o resultado com set_transient().

PHP
<?php
function meu_plugin_get_produtos_destaque(): array
{
    $cache_key = 'produtos_destaque_v1';
    $cached    = get_transient($cache_key);

    if ($cached !== false) {
        return $cached;
    }

    // Query ou chamada de API pesada
    $produtos = get_posts([
        'post_type'      => 'produto',
        'posts_per_page' => 10,
        'meta_key'       => '_destaque',
        'meta_value'     => '1',
    ]);

    $data = array_map(fn($p) => [
        'id'    => $p->ID,
        'title' => $p->post_title,
        'url'   => get_permalink($p->ID),
    ], $produtos);

    // Cacheia por 1 hora
    set_transient($cache_key, $data, HOUR_IN_SECONDS);

    return $data;
}

// Limpar cache ao salvar um produto
add_action('save_post_produto', function () {
    delete_transient('produtos_destaque_v1');
});

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →