# Como corrigir a exclusão de páginas do cache no WP Rocket no WordPress

A exclusão de uma página do cache no WP Rocket não funciona quando o padrão de URL no campo Never Cache URL(s) está mal formatado, quando um cache de servidor ou CDN fica acima do plugin, ou quando o Preload recacheia a página logo após a limpeza.

## O que é exclusão de página do cache no WP Rocket?

A exclusão de uma página do cache no WP Rocket significa dizer ao plugin para nunca servir aquela URL a partir do HTML estático em cache, entregando sempre a versão dinâmica gerada pelo PHP. Isso é necessário em páginas que mudam por visitante ou por sessão, como carrinho, checkout, área de membros, painéis logados e páginas com conteúdo personalizado. O WP Rocket faz essa exclusão pelo campo Never Cache URL(s), dentro da aba Advanced Rules (Regras Avançadas) das configurações do plugin.

A falha aparece quando, mesmo com a URL listada para nunca cachear, a página continua sendo servida do cache: o conteúdo fica congelado, o carrinho mostra itens de outro visitante ou dados logados aparecem para quem não deveria ver. Na prática, a exclusão não pega por três motivos recorrentes: o padrão de URL digitado não casa com o caminho real (barra final, subpasta ou curinga errado), existe um cache acima do WP Rocket (cache de servidor como Varnish, ou Cloudflare com Cache Everything) que serve a página antes do plugin, ou o Preload do WP Rocket recacheia a URL logo após qualquer limpeza. O comportamento de cada um desses pontos está documentado na base de conhecimento oficial do WP Rocket.

## Como identificar

- Uma página listada em Never Cache URL(s) continua mostrando conteúdo antigo ou congelado, como se nunca tivesse sido excluída do cache.
- O comentário de rodapé do HTML ainda exibe a linha 'This website is like a rocket, isn't it? Performance optimized by WP Rocket' em uma página que deveria estar fora do cache.
- O carrinho ou a área de membros mostra dados de outro visitante, sinal de que a página dinâmica está sendo servida do cache estático.
- A página volta a ser cacheada poucos minutos depois de você limpar o cache, mesmo sem ninguém editar nada.
- A exclusão funciona para a URL exata digitada, mas não pega as variações com paginação, parâmetros de query ou subpáginas.

**Antes de começar:** Antes de editar o functions.php ou alterar regras de cache no Cloudflare e no servidor, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging. Um erro no functions.php pode derrubar o site, então mantenha acesso por FTP para reverter.

## Como prevenir

- Sempre digite os caminhos no Never Cache URL(s) como caminho relativo com barra inicial e use o curinga (.*) quando precisar cobrir subpáginas e parâmetros.
- Mantenha o WooCommerce e o EDD com as integrações nativas do WP Rocket ativas, pois carrinho, checkout e minha-conta já são excluídos automaticamente quando o plugin reconhece a loja.
- Documente, em cada projeto, qual cache fica acima do WP Rocket (host ou Cloudflare) e replique as exclusões nessas camadas para evitar páginas dinâmicas congeladas.
- Depois de cada alteração nas regras, limpe o cache e valide a página excluída pelos cabeçalhos da resposta antes de considerar o ajuste concluído.

Erros relacionados

- [Como corrigir o WP Rocket que não gera cache](https://full.services/wp-fixer/corrigir-wp-rocket-nao-gera-cache/)
- [Como corrigir o erro de Preload no WP Rocket](https://full.services/wp-fixer/corrigir-erro-preload-wp-rocket/)
- [Como corrigir erros de integração entre WP Rocket e Cloudflare](https://full.services/wp-fixer/corrigir-integracao-wp-rocket-cloudflare/)

## Causa

- O padrão digitado no campo Never Cache URL(s) usa a URL completa com https://domínio em vez do caminho relativo a partir da raiz começando com barra, então o WP Rocket não casa o padrão com a requisição e cacheia a página mesmo assim.
- A barra final do caminho não bate: você excluiu /minha-página mas o site responde em /minha-página/ (ou o contrário), e como o WP Rocket compara o caminho exato, a página fora do padrão continua sendo cacheada.
- Falta o curinga (.*) para cobrir subpáginas, paginação ou parâmetros: excluir só /loja deixa /loja/page/2 e /loja/?orderby=price ainda no cache.
- Existe um cache de página acima do WP Rocket, como Varnish ou cache do próprio servidor de hospedagem, que serve a resposta antes do PHP rodar, então a regra de exclusão do plugin nunca é avaliada.
- O Cloudflare está com a opção Cache Everything (ou APO) ativa e guarda o HTML na borda, devolvendo a página em cache independentemente do que o WP Rocket decide no servidor de origem.
- O Preload do WP Rocket revisita e recacheia a URL logo após cada limpeza de cache, então a página excluída por engano (padrão que não casou) volta ao cache em minutos e parece que a exclusão nunca funcionou.

## Como resolver

1. Abra o campo Never Cache URL(s) nas Regras Avançadas: Vá às configurações do WP Rocket e abra a aba de Regras Avançadas. O campo Never Cache URL(s) é onde você lista os caminhos que nunca devem ser servidos do cache estático, um por linha.

```
Painel WP -> Configurações -> WP Rocket -> Advanced Rules (Regras Avançadas)
Localize o campo Never Cache URL(s)
```

2. Use o caminho relativo a partir da raiz, não a URL completa: Digite o caminho começando com barra a partir da raiz do domínio, sem o https nem o nome do site. Uma entrada por linha. Esse é o formato que o WP Rocket compara com a requisição.

```
/minha-página/
/área-de-membros/
Evite colar a URL completa com https://seudominio.com no campo
```

3. Adicione o curinga (.*) para cobrir subpáginas e parâmetros: Para excluir uma seção inteira, incluindo paginação, parâmetros de query e subpáginas, acrescente o curinga (.*) ao final do caminho. Sem ele, só a URL exata é excluída.

```
/loja(.*)
/minha-conta(.*)
Salve as alterações e limpe o cache em WP Rocket -> Dashboard -> Limpar cache
```

4. Confirme se há cache acima do WP Rocket: Verifique no host se existe Varnish ou cache de página no servidor, e no Cloudflare se Cache Everything ou APO está ativo. Esses caches ficam acima do plugin e precisam da própria regra de bypass para a URL excluída.

```
Inspecione os cabeçalhos da resposta da página (F12 -> Network) procurando x-cache, cf-cache-status ou age
No Cloudflare, crie uma Cache Rule de Bypass cache para o caminho excluído se Cache Everything estiver ativo
No painel do host, exclua o mesmo caminho do cache de servidor (Varnish/Nginx) ou peça ao suporte
```

5. Force a exclusão por código quando o painel não basta: Para URLs geradas dinamicamente ou condições que o campo do painel não cobre, registre a exclusão pelo filtro oficial rocket_cache_reject_uri no functions.php do tema filho. Esse caminho exige editar arquivo do tema.

```
Acesse o tema filho via FTP ou Aparência -> Editor de Arquivos do Tema
Edite o functions.php do tema filho
Adicione o filtro rocket_cache_reject_uri (veja o bloco de código abaixo) e salve
```


## Código

```php
<?php
// functions.php do tema filho — exclui caminhos do cache do WP Rocket por filtro.
add_filter( 'rocket_cache_reject_uri', 'full_wp_rocket_never_cache' );
function full_wp_rocket_never_cache( $uris ) {
    // Cada entrada e um caminho relativo (regex). (.*) cobre subpaginas e parametros.
    $uris[] = '/area-de-membros(.*)';
    $uris[] = '/minha-pagina-dinamica/';
    return $uris;
}
```

## Perguntas frequentes

### Onde fica o campo para excluir páginas do cache no WP Rocket

O campo Never Cache URL(s) fica nas configurações do WP Rocket, dentro da aba Advanced Rules (Regras Avançadas). Você lista um caminho por linha e clica em salvar para que o plugin nunca sirva aquelas URLs a partir do cache estático.

### Por que minha página continua cacheada mesmo no Never Cache URL(s)

Na maioria dos casos o padrão de URL não casa com o caminho real do site, por causa de barra final ausente, URL completa em vez do caminho relativo ou falta do curinga. Reescreva a entrada como caminho relativo com barra inicial e adicione (.*) para cobrir variações.

### Como excluir uma seção inteira do site, e não só uma URL

Acrescente o curinga (.*) ao final do caminho da seção, como /loja(.*). Assim o WP Rocket exclui a página principal, as subpáginas, a paginação e as URLs com parâmetros de query daquela seção de uma vez.

### O WP Rocket exclui carrinho e checkout sozinho

Sim, quando reconhece WooCommerce ou Easy Digital Downloads, o WP Rocket já exclui automaticamente carrinho, checkout e minha-conta do cache. Você só precisa adicionar manualmente páginas dinâmicas próprias que o plugin não reconhece.

### Por que a página volta a ser cacheada logo depois que eu limpo o cache

Isso costuma indicar que o padrão de exclusão não pegou e o Preload do WP Rocket recacheou a URL na próxima visita ou rastreamento. Corrija o padrão no Never Cache URL(s) e, se preciso, force a exclusão pelo filtro rocket_cache_reject_uri.

### Cloudflare pode servir a página em cache mesmo com a exclusão do WP Rocket

Pode. Se o Cloudflare estiver com Cache Everything ou APO ativo, ele guarda o HTML na borda e devolve a versão em cache antes de chegar ao servidor de origem. Crie uma regra de Bypass cache no Cloudflare para o mesmo caminho excluído no WP Rocket.

### Como sei se a página está realmente fora do cache

Abra a página em uma aba anônima e inspecione o HTML: se o comentário do WP Rocket no rodapé sumiu, a página não está sendo servida do cache do plugin. Confira também os cabeçalhos da resposta, como cf-cache-status e x-cache, para descartar cache de CDN ou servidor.

### Preciso editar código para excluir uma página do cache

Não para a maioria dos casos, que se resolvem no campo Never Cache URL(s). O filtro rocket_cache_reject_uri no functions.php só é necessário para URLs dinâmicas ou condições que o painel não cobre, como excluir por parâmetro ou por regra programática.

**Fonte:** [WP Rocket — Documentação oficial (Knowledge Base)](https://docs.wp-rocket.me/)
