set_transient() / get_transient() — Cache temporário
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');
});