Como corrigir o conflito de otimização entre Perfmatters e WP Rocket
O que é conflito entre Perfmatters e WP Rocket?
Perfmatters e WP Rocket são plugins de performance que tem recursos sobrepostos: ambos fazem Remove Unused CSS, Delay JavaScript, lazy load de imagens, host local de Google Fonts e controle da Heartbeat API. O conflito de otimização entre Perfmatters e WP Rocket não e um bug, e o resultado de aplicar a mesma transformacao no mesmo arquivo duas vezes. Quando os dois plugins reescrevem o mesmo CSS ou adiam o mesmo JavaScript, o segundo processa a saida já modificada do primeiro, gerando CSS crítico incompleto, scripts que nunca executam e elementos que so aparecem após interacao.
Como identificar
- Layout quebra so com cache e otimização ligados: limpar o cache ou desativar um dos plugins restaura o visual, o que indica processamento duplicado de CSS.
- Mensagem ‘Uncaught ReferenceError’ ou ‘is not defined’ no Console do navegador (F12 -> Console), apontando um script que foi adiado por Delay JavaScript nos dois plugins.
- A própria interface do WP Rocket avisa que o Remove Unused CSS foi desativado automaticamente porque o recurso equivalente esta ativo no Perfmatters.
- Sliders, menus, abas e formulários so funcionam depois que o visitante clica ou rola a página, sintoma classico de Delay JavaScript aplicado em dobro.
- O score do PageSpeed oscila ou piora após ligar o segundo plugin, em vez de melhorar, porque o CSS crítico sai incompleto.
Como prevenir
- Mantenha uma planilha simples anotando qual plugin e dono de cada otimização (Remove Unused CSS, Delay JS, lazy load, fontes locais), para não reativar um recurso já coberto pelo outro.
- Ao instalar um segundo plugin de performance, revise primeiro os recursos sobrepostos antes de ligar qualquer toggle novo.
- Após cada mudanca de otimização, teste o site em uma aba anonima e olhe o Console do navegador antes de considerar a alteração concluida.
- Prefira usar o Script Manager do Perfmatters para desligar scripts por página em vez de empilhar mais combinacao e adiamento global.
Causa
- Remove Unused CSS ligado nos dois plugins ao mesmo tempo: o WP Rocket desativa o próprio recurso quando detecta o do Perfmatters, mas se você forcar os dois o CSS crítico sai truncado.
- Delay JavaScript execution ativo em ambos: o mesmo script e adiado duas vezes e perde a dependencia de quem deveria carregar antes, quebrando jQuery e plugins que dependem dele.
- Combinar CSS ou combinar JavaScript ligado nos dois: a combinacao do segundo plugin empacota arquivos já combinados pelo primeiro, gerando ordem de carregamento errada.
- Lazy load de imagens ativo no Perfmatters e no WP Rocket: a imagem recebe o atributo loading e o data-src duas vezes e algumas nunca trocam o placeholder pelo arquivo real.
- Host local de Google Fonts marcado nos dois: cada plugin tenta baixar e reescrever a URL da fonte, e a segunda reescrita aponta para um arquivo que o primeiro já moveu, resultando em fonte que não carrega.
Como resolver
- Definir o plugin dono de cada otimização: Antes de mexer em qualquer toggle, decida em qual plugin cada recurso vai morar. A regra e simples: uma otimização, um plugin. Mantenha o cache de página, o cache de navegador e o Critical CSS no WP Rocket, e deixe o controle fino de assets (Script Manager) no Perfmatters.
- Desligar o Remove Unused CSS duplicado: Escolha UM plugin para remover CSS não utilizado e desligue o recurso no outro. Pelo painel do WordPress, abra as configurações e desmarque o recurso no plugin que você não escolheu.
WP Rocket -> Arquivos CSS -> Optimize CSS delivery -> Remove Unused CSS Perfmatters -> Assets -> CSS -> Remove Unused CSS - Manter o Delay JavaScript em um plugin so: Deixe o Delay JavaScript ligado em apenas um plugin. Também desligue qualquer recurso de combinar JavaScript no outro plugin, porque combinar arquivos junto com o delay e a causa mais comum de script que não executa.
WP Rocket -> Arquivos JavaScript -> Delay JavaScript execution Perfmatters -> Assets -> JavaScript -> Delay JavaScript Perfmatters -> Assets -> JavaScript -> Combine JavaScript (desligar) - Limpar o cache e validar no Console: Depois de tirar as duplicidades, limpe o cache do WP Rocket e recarregue a página sem cache do navegador. Abra o Console do navegador e confira se os erros de ReferenceError sumiram. Se um script específico ainda quebrar, adicione o arquivo na caixa de exclusão do Delay JavaScript do plugin que ficou responsável.
WP Rocket -> Painel -> Limpar cache Ctrl + F5 (recarregar sem cache) F12 -> Console (verificar erros)
<?php
// functions.php do tema-filho: desliga o Remove Unused CSS do Perfmatters
// em uma URL especifica, deixando o WP Rocket cuidar do CSS so naquela pagina.
add_filter( 'perfmatters_remove_unused_css', function ( $enabled ) {
if ( is_page( 'checkout' ) ) {
return false; // entrega o CSS dessa pagina ao WP Rocket
}
return $enabled;
} );














