Como corrigir o aviso de CSS não utilizado no WordPress
O que é o aviso de unused CSS no WordPress?
Unused CSS no WordPress e o CSS que o navegador baixa numa página mas não chega a usar: o tema e cada plugin enfileiram a folha de estilo inteira em toda página, mesmo que so uma fracao das regras valha para aquela URL. O PageSpeed Insights e o Lighthouse sinalizam isso na auditoria Reduce unused CSS, estimando quantos KiB poderiam ser economizados. Como o CSS e um recurso que bloqueia a renderizacao, esse excesso atrasa o First Contentful Paint e o Largest Contentful Paint. A correção moderna não e apagar o CSS na mao: e gerar o Used CSS por página, ou seja, calcular quais regras aquela URL realmente usa, servir so essas no carregamento inicial e adiar ou remover o resto. O Perfmatters faz isso de forma automatizada com a opção Remove Unused CSS, enquanto o Autoptimize cobre parte do problema agregando e adiando CSS, sem o calculo de Used CSS por página.
Como identificar
- No relatório do PageSpeed Insights aparece a auditoria “Reduce unused CSS” (ou “Reduzir CSS não utilizado”) listando arquivos .css com KiB potenciais de economia.
- O LCP e o First Contentful Paint ficam altos e a aba Coverage do DevTools mostra alta porcentagem de bytes de CSS não usados na página.
- Depois de ativar o Remove Unused CSS, a página abre “sem estilo” (texto cru, botões sem cor, grade desalinhada) na primeira visita de cada URL e volta ao normal ao recarregar.
- Um componente que aparece so após interacao (slider, mega menu, popup, sticky header, abas) perde a formatacao porque seu CSS foi considerado não usado.
- O layout quebra para o visitante deslogado mas continua certo para você, que esta logado como administrador e recebe o CSS completo.
Como prevenir
- Ative o Remove Unused CSS comecando pelo Stylesheet Behavior em Delay e so passe para Remove depois de validar o site inteiro.
- Mantenha na lista de Excluded Stylesheets e Excluded Selectors os arquivos e seletores de componentes que aparecem so após interacao (sliders, popups, mega menu).
- Limpe o Used CSS sempre que alterar o Customizer, trocar de tema ou atualizar um page builder, para evitar estilo desatualizado em cache.
- Teste cada mudanca de otimização em uma janela anonima e no mobile antes de considerar o ajuste concluido.
- Mantenha um export das configurações do Perfmatters como ponto de restauração depois de cada ajuste validado.
Causa
- O tema e os plugins enfileiram a folha de estilo completa em toda página via wp_enqueue_style, entao páginas simples carregam regras de componentes que nunca aparecem ali.
- Page builders como Elementor e Divi geram um arquivo CSS grande por widget e por kit global, e a maior parte das regras não se aplica a uma página específica.
- No Perfmatters, a opção Stylesheet Behavior esta em Remove (a mais agressiva), que apaga as folhas originais sem excecao para o estilo que a página ainda usava.
- O Used CSS foi gerado uma vez e ficou em cache desatualizado depois de uma mudanca no Customizer ou de uma atualização de plugin, entao o estilo novo não entrou no calculo.
- Um componente que depende de interacao (popup, off-canvas, carrossel) so injeta o CSS após o clique, e o gerador de Used CSS, que le o HTML inicial, não captura essas regras.
- O Autoptimize esta agregando e adiando o CSS, mas sem gerar Used CSS por página, entao o PageSpeed continua acusando CSS não utilizado mesmo com o plugin ativo.
Como resolver
- Confirme o problema no PageSpeed e no Coverage: rode a página lenta no PageSpeed Insights e abra a auditoria de CSS não utilizado para ver quais arquivos pesam. No navegador, use a aba Coverage do DevTools para medir a porcentagem de CSS baixado e não usado naquela URL.
PageSpeed Insights -> auditoria "Reduce unused CSS" (veja os .css e os KiB) DevTools (F12) -> Ctrl+Shift+P -> Show Coverage -> recarregue a página - Ative o Remove Unused CSS no Perfmatters: no painel do Perfmatters, abra a aba CSS e ligue o Remove Unused CSS. Comece pela geração Inline (default), que coloca o CSS usado no inicio do HTML e tende a render a melhor nota de PageSpeed antes de qualquer ajuste fino.
Perfmatters -> CSS -> Remove Unused CSS: On Used CSS Method: Inline (default) - Escolha o Stylesheet Behavior menos agressivo: o Stylesheet Behavior define o que acontece com as folhas originais depois que o Used CSS e gerado. Prefira Delay ou Async em vez de Remove: as duas primeiras adiam o estilo original como rede de segurança, enquanto Remove apaga tudo e exige mais excecoes.
Perfmatters -> CSS -> Remove Unused CSS -> Stylesheet Behavior: Delay Use Remove apenas em sites simples e depois de testar - Adicione excecoes para o estilo que quebrou: quando um componente fica sem formatacao, proteja o estilo dele em vez de desligar o recurso. Informe o arquivo .css em Excluded Stylesheets e a classe ou id do componente em Excluded Selectors, um por linha, para que essas regras nunca sejam cortadas.
Perfmatters -> CSS -> Used CSS -> Excluded Stylesheets /wp-content/plugins/elementor/assets/css/frontend.min.css Perfmatters -> CSS -> Used CSS -> Excluded Selectors .elementor-widget-slides #site-navigation - Limpe o Used CSS e regenere: toda vez que mudar excecoes, o comportamento ou o layout no Customizer, o cache do Used CSS precisa ser refeito. Limpe o Used CSS pelas ferramentas do Perfmatters e também o cache do seu plugin de cache para forcar a regeneracao.
Perfmatters -> Tools -> Clear Used CSS Limpe também o cache do plugin de cache (WP Rocket, LiteSpeed, etc.) - Valide em janela anonima, desktop e mobile: o Used CSS e servido do cache para o visitante, não para o admin logado, e e gerado separado para desktop e mobile. Abra a URL corrigida numa janela anonima e também no celular para confirmar que o layout voltou nos dois contextos.
Teste em janela anonima (Ctrl+Shift+N) sem estar logado Repita o teste no celular ou no modo responsivo do DevTools
// functions.php do tema filho
// Remove folhas de estilo que NAO sao usadas em uma pagina especifica,
// na origem (dequeue), reduzindo o unused CSS antes de qualquer plugin de cache.
// Ajuste os handles e a condicao para o seu caso real.
add_action( 'wp_enqueue_scripts', function () {
// Exemplo: o CSS do bloco de comentarios so e util onde ha comentarios.
if ( ! is_singular() || ! comments_open() ) {
wp_dequeue_style( 'wp-block-comments' );
}
// Exemplo: estilo de um plugin de formulario so na pagina de contato.
if ( ! is_page( 'contato' ) ) {
wp_dequeue_style( 'contact-form-7' );
}
}, 100 );
// Filtro do Perfmatters: exclui um stylesheet do calculo de Used CSS via codigo,
// util quando a folha precisa carregar inteira (ex.: page builder).
add_filter( 'perfmatters_rucss_excluded_stylesheets', function ( $excluded ) {
$excluded[] = 'frontend.min.css';
return $excluded;
} );














