Como corrigir a submissao de formulários quebrada pelo cache do WP Rocket no WPForms
O que é o WPForms que não envia com o cache do WP Rocket?
Esse erro acontece quando o WPForms para de processar o envio depois que o WP Rocket entra no site. O WPForms envia o formulário por AJAX, em segundo plano, sem recarregar a página (opção Enable AJAX form submission, em Settings, General, Advanced). Esse envio depende do script wpforms.min.js e do jQuery rodarem assim que a página carrega. O WP Rocket, por padrão, adia esse JavaScript com o Delay JavaScript Execution (so executa após a primeira interacao do visitante) e ainda pode combinar e minificar os arquivos. Com o script adiado ou na ordem errada, o botão Enviar não responde, o spinner gira sem parar ou o envio falha em silencio. O conserto e dizer ao WP Rocket para não otimizar os arquivos do WPForms e do reCAPTCHA.
Como identificar
- O botão Enviar do formulário fica girando o spinner e nunca conclui o envio.
- Clicar em Enviar não faz nada na primeira interacao, mas funciona ao recarregar a página com cache desligado.
- O Console do navegador (F12) mostra erro do tipo “wpforms is not defined” ou “jQuery is not defined”.
- As entradas param de aparecer em WPForms, Entries depois que o WP Rocket foi ativado ou que o Delay JavaScript foi ligado.
- O formulário envia normalmente para administradores logados (que veem a página sem cache), mas falha para visitantes anonimos.
Como prevenir
- Ao instalar qualquer plugin de cache, teste todos os formulários como visitante anonimo antes de publicar
- Mantenha os assets do WPForms e do reCAPTCHA na lista de exclusão do Delay JavaScript e do Combine JavaScript do WP Rocket
- Adicione a página de contato em Never Cache URL(s) quando o formulário usar nonce ou campos dinâmicos
- Depois de cada atualização do WP Rocket ou do WPForms, refaca um envio de teste para detectar regressao cedo
Causa
- O Delay JavaScript Execution do WP Rocket segura o script wpforms.min.js até a primeira interacao, e o envio AJAX não inicializa a tempo.
- A opção Combine JavaScript files junta o wpforms.min.js com outros scripts e quebra a ordem de execução das dependencias.
- A minificacao de JavaScript do WP Rocket corrompe o script do reCAPTCHA v3 que o WPForms usa para validar o envio.
- A página do formulário foi servida do cache com um nonce de segurança já expirado, e o WPForms recusa o envio AJAX por nonce invalido.
- O Remove Unused CSS removeu o estilo do spinner e dos campos condicionais, deixando o formulário travado visualmente após o clique.
Como resolver
- Confirme que e o WP Rocket: abra o painel do WP Rocket em Settings, WP Rocket, va na aba File Optimization e desligue temporariamente Delay JavaScript Execution. Teste o formulário como visitante anonimo (aba anonima). Se o envio volta, a causa esta nas otimizacoes de JavaScript.
- Exclua os assets do WPForms do Delay JavaScript: religue o Delay JavaScript Execution e, no campo de exclusão Excluded JavaScript Files, adicione os caminhos do WPForms e do reCAPTCHA, um por linha. Salve as opções.
/wp-content/plugins/wpforms-lite/assets/js/ /wp-content/plugins/wpforms/assets/js/ wpforms google.com/recaptcha gstatic.com/recaptcha - Tire o WPForms do Combine e do Minify JavaScript: ainda na aba File Optimization, no campo Excluded JavaScript Files das opções Minify e Combine, adicione o mesmo caminho do plugin para o script não ser juntado nem reescrito.
/wp-content/plugins/wpforms-lite/assets/js/(.*).js /wp-content/plugins/wpforms/assets/js/(.*).js - Limpe o cache e gere de novo: depois de salvar, clique em Clear and preload cache no menu do WP Rocket para descartar as páginas antigas que ainda carregam o formulário sem o envio.
Settings -> WP Rocket -> Dashboard -> Clear and preload cache - Resolva o nonce expirado da página cacheada: se o erro for de nonce e não de script, abra a aba Advanced Rules do WP Rocket e adicione a URL da página do formulário em Never Cache URL(s), para ela ser sempre gerada com um nonce valido.
/contato/ /fale-conosco/ - Confirme o envio real: abra a página do formulário numa aba anonima, envie um teste e verifique a chegada da entrada em WPForms, Entries e do e-mail de notificação. Cheque o Console (F12) para garantir que não restou erro de wpforms is not defined.
// functions.php do tema filho — marca o script do WPForms para o WP Rocket NUNCA atrasar
// (alternativa via codigo ao campo de exclusao; o atributo nowprocket desliga o Delay JS naquele handle)
add_filter( 'script_loader_tag', function ( $tag, $handle ) {
$excluir = array( 'wpforms', 'wpforms-modern', 'wpforms-recaptcha' );
if ( in_array( $handle, $excluir, true ) ) {
return str_replace( '<script ', '<script nowprocket ', $tag );
}
return $tag;
}, 10, 2 );














