🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o erro de Critical CSS não gerado no WP Rocket

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Critical CSS não gerado no WP Rocket EN: WP Rocket Critical CSS not generated
Severidade Atenção
Descrição O erro Critical CSS not generated no WP Rocket ocorre quando a API do plugin não consegue acessar a página para gerar o CSS crítico, retornando mensagens como Invalid response code, cURL error 28 ou Timeout. A causa quase sempre e bloqueio de IP por firewall, Cloudflare Bot Fight Mode ou WP-cron parado.

O que é Critical CSS not generated no WP Rocket?

Critical CSS (ou Critical Path CSS) e o CSS mínimo necessário para renderizar a parte visivel da página sem bloqueio de renderizacao. O WP Rocket gera esse CSS chamando uma API externa que visita cada URL do site, extrai os estilos usados acima da dobra e devolve o resultado para o plugin armazenar. No WP Rocket 3.9 e versões mais novas, a opção Remove Unused CSS gera o Used CSS de forma assincrona e o injeta como uma tag style com id wpr-usedcss logo após a tag title.

O erro Critical CSS not generated aparece quando essa geração assincrona falha: a API do WP Rocket tenta visitar a URL do seu site mas recebe uma resposta diferente de 200, esgota o tempo de espera ou e bloqueada por uma camada de segurança. Como o processo roda em segundo plano via WP-cron, a falha costuma passar despercebida até o usuário notar que o site continua com CSS bloqueante no PageSpeed Insights.

Como identificar

  • A barra de notificação do WP Rocket exibe a mensagem Critical CSS generation is currently running e ela nunca conclui, ficando presa por horas.
  • O painel mostra o erro Invalid response code ao tentar gerar o CSS, indicando resposta diferente de 200 (geralmente 404, 400 ou 403) na URL processada.
  • Aparece a mensagem cURL error 28 ou Timeout, indicando que a API do WP Rocket não recebeu resposta dentro do limite de tempo.
  • Surge a mensagem No valid stylesheets available ou Styles contain one or more errors quando os arquivos CSS estão vazios, inacessiveis ou retornam erro.
  • O PageSpeed Insights continua acusando Eliminate render-blocking resources mesmo com Optimize CSS Delivery ativado, e a pasta cache/used-css/1/ não contem os arquivos .css.gz esperados.
Antes de começar: Faca backup do wp-config.php antes de editar constantes como DISABLE_WP_CRON e WP_HTTP_BLOCK_EXTERNAL. Um erro de sintaxe nesse arquivo derruba o site inteiro com tela branca, e o backup permite restaurar o estado anterior em segundos.

Como prevenir

  • Mantenha um cron real do servidor (a cada 5 minutos) apontando para wp-cron.php em vez de depender so do WP-cron disparado por visitas, garantindo que a fila do Used CSS seja sempre processada.
  • Antes de ativar Remove Unused CSS, garanta que o site esteja publicamente acessivel, sem maintenance mode e sem bloqueio de IP nas ferramentas de segurança.
  • Reduza o TTFB para menos de 1 segundo com cache de página e um bom host, evitando o limite de 20 segundos da API que dispara Timeout.
  • Limite a cadeia de redirecionamentos a no máximo um salto (por exemplo HTTP direto para HTTPS com barra final), evitando o erro Too many redirections.

Causa

  • Cloudflare com Bot Fight Mode ativo ou um plugin de segurança (Wordfence, iThemes, All-In-One Security) bloqueando o IP da API do WP Rocket, o que gera Invalid response code ou Connection refused.
  • WP-cron desativado ou travado: sem a constante de cron rodando, a fila de geração assincrona do Used CSS nunca e processada e a notificação fica presa em running.
  • A constante WP_HTTP_BLOCK_EXTERNAL definida como true no wp-config.php, que bloqueia as requisicoes HTTP de saida do servidor e provoca a mensagem User has blocked requests through HTTP.
  • TTFB acima de 20 segundos ou páginas que demoram mais de 45 segundos para carregar sem cache, estourando o limite de tempo da API e retornando Timeout.
  • Mais de 2 redirecionamentos na URL processada (por exemplo HTTP para HTTPS e depois com barra final), o que dispara Too many redirections e aborta a geração.
  • Tema ou plugin que injeta apenas CSS inline, sem tags link de folha de estilo externa, resultando em No valid stylesheets available.

Como resolver

  1. Confirme o status do serviço e a licenca: Antes de mexer no site, verifique se a própria API do WP Rocket esta operacional e se sua licenca esta valida, já que ambas são pre-requisito para a geração do CSS crítico. Abra a página de status do serviço e confirme a licenca no painel do plugin.
    WordPress -> Configurações -> WP Rocket -> Dashboard (verifique a validade da licenca)
    https://status.wp-rocket.me/
  2. Garanta que o WP-cron esta funcionando: A geração do Used CSS e assincrona e depende do WP-cron para processar a fila a cada 60 segundos. Se o cron estiver desativado, a notificação fica presa em running para sempre. Cheque se a constante de desativacao do cron esta no wp-config.php e, em hospedagem compartilhada, prefira um cron real do servidor.
    grep DISABLE_WP_CRON wp-config.php
    define( 'DISABLE_WP_CRON', false );
    wp cron event list --allow-root
  3. Libere o IP e o user agent da API nas camadas de segurança: A causa mais comum e o IP da API do WP Rocket ser barrado. Desative o Bot Fight Mode no Cloudflare e adicione os IPs e o user agent da ferramenta na allowlist do firewall e do plugin de segurança. Também confirme que a query string de bypass de cache e permitida.
    Cloudflare -> Security -> Bots -> Bot Fight Mode: Off
    ?wpr_imagedimensions=1&nowprocket=1&no_optimize=1
    Wordfence -> All Options -> Allowlisted IP addresses (adicione os IPs da API)
  4. Remova o bloqueio de HTTP externo no wp-config.php: Se o site define WP_HTTP_BLOCK_EXTERNAL como true, o servidor não consegue conversar com a API e a geração falha com User has blocked requests through HTTP. Desative o bloqueio ou, se precisar mante-lo, adicione o domínio da API a lista de hosts acessiveis.
    define( 'WP_HTTP_BLOCK_EXTERNAL', false );
    define( 'WP_ACCESSIBLE_HOSTS', 'wp-rocket.me,*.wp-rocket.me' );
  5. Limpe o Used CSS e force a regeneracao: Depois de corrigir o bloqueio, limpe o Used CSS atual e gere de novo. Use o botão do plugin para limpar e, em seguida, instale o CPCSS Debug Helper oficial para descobrir qual URL específica esta retornando erro, caso o problema persista em páginas isoladas.
    WP Rocket (barra de admin) -> Clear Used CSS
    WordPress -> Configurações -> WP Rocket -> File Optimization -> Regenerate Used CSS
    ls -lah wp-content/cache/used-css/1/
PHP
<?php
// wp-config.php — destrave a geracao de Critical CSS do WP Rocket
// Coloque ANTES da linha: /* That's all, stop editing! */

// 1. Garanta que o WP-cron esteja ativo (a fila de Used CSS depende dele)
define( 'DISABLE_WP_CRON', false );

// 2. Permita requisicoes HTTP de saida para a API do WP Rocket
define( 'WP_HTTP_BLOCK_EXTERNAL', false );

// Se precisar manter o bloqueio externo, libere apenas o host da API:
// define( 'WP_HTTP_BLOCK_EXTERNAL', true );
// define( 'WP_ACCESSIBLE_HOSTS', 'wp-rocket.me,*.wp-rocket.me' );

Perguntas frequentes

O que significa o erro critical css not generated no WP Rocket?
Significa que a API do WP Rocket tentou visitar a URL do seu site para extrair o CSS crítico, mas não conseguiu uma resposta valida. Na prática o plugin recebeu um código diferente de 200, um timeout ou um bloqueio de firewall, entao o CSS crítico não foi salvo e o site continua com renderizacao bloqueante.
Critical CSS e Used CSS são a mesma coisa no WP Rocket?
Não exatamente. O Critical Path CSS legado carregava o CSS de forma assincrona e era menor. A partir do WP Rocket 3.9, o recurso Remove Unused CSS gera o Used CSS, que remove todas as folhas não usadas e injeta so o necessário em uma tag style com id wpr-usedcss. As mensagens de erro de geração, porém, são semelhantes nas duas abordagens.
Por que a mensagem Critical CSS generation is currently running nunca termina?
Quase sempre porque o WP-cron esta desativado ou travado. A geração roda em segundo plano e o plugin checa a conclusão a cada 60 segundos via cron. Sem um cron funcional, a fila nunca avanca e a notificação fica presa em running indefinidamente. Ativar um cron real do servidor resolve.
O Cloudflare pode causar o erro de Critical CSS no WP Rocket?
Sim. O Bot Fight Mode e regras de firewall do Cloudflare costumam bloquear o IP da API do WP Rocket, gerando Invalid response code ou Connection refused. Desativar o Bot Fight Mode e liberar os IPs e o user agent da ferramenta na allowlist resolve a maioria desses casos.
O que fazer quando aparece No valid stylesheets available?
Esse erro indica que a página não tem folhas de estilo externas validas em tags link, so CSS inline ou arquivos vazios e inacessiveis. Verifique se o tema realmente enfileira CSS externo, se os arquivos retornam código 200 e se nenhum plugin esta removendo as tags link antes da geração.
Preciso de licenca paga para gerar Critical CSS no WP Rocket?
Sim. O WP Rocket e um plugin premium e o recurso Optimize CSS Delivery, incluindo Remove Unused CSS, depende de uma licenca ativa e valida. Sem licenca em dia a API recusa o processamento e a geração do CSS crítico não acontece.
Como descubro qual URL esta causando a falha de geração?
Instale o CPCSS Debug Helper, plugin oficial do WP Rocket, que mostra exatamente quais URLs a ferramenta tentou acessar e o resultado de cada uma. Com a lista em maos, abra cada URL no navegador para confirmar se carrega com código 200 sem bloqueio de segurança ou redirecionamento excessivo.

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 →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes