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

Como corrigir a submissao de formulários quebrada pelo cache do WP Rocket no WPForms

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Formulário WPForms quebrado pelo cache do WP Rocket EN: WPForms submission broken by WP Rocket cache
Severidade Grave
Descrição Quando o WPForms não envia com o WP Rocket cache, o Delay JavaScript Execution segurou o wpforms.min.js até a interacao do usuário, ou o Combine/Minify JS quebrou a ordem de carga. Excluir os assets do WPForms dessas otimizacoes restaura o envio AJAX do formulário.

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

  1. 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.
  2. 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
  3. 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
  4. 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
  5. 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/
  6. 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.
PHP
// 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 );

Perguntas frequentes

Por que o WPForms para de enviar so depois de instalar o WP Rocket?
Porque o WP Rocket adia o JavaScript com o Delay JavaScript Execution. O wpforms.min.js, que dispara o envio AJAX, so executa após a primeira interacao do visitante e isso quebra a inicializacao do formulário. Excluir os assets do WPForms dessa otimização resolve.
Qual otimização do WP Rocket mais quebra formulários?
O Delay JavaScript Execution e a principal, seguido do Combine JavaScript files. O Delay segura o script até a interacao e o Combine muda a ordem de carga das dependencias. Excluir o caminho do WPForms dos dois campos costuma resolver o envio.
Preciso desligar o cache inteiro para o formulário voltar?
Não. Desligar o cache resolve o sintoma mas mata a performance. O caminho certo e excluir apenas os assets do WPForms das otimizacoes de JavaScript e, se houver nonce, adicionar a página do formulário em Never Cache URL(s).
O envio funciona logado mas falha para visitante. Por que?
Porque administradores logados costumam ver a página sem cache, entao o script carrega normal. O visitante anonimo recebe a versão cacheada e otimizada, onde o script foi adiado ou o nonce expirou. Teste sempre numa aba anonima.
Como descubro qual script esta sendo bloqueado?
Abra o Console do navegador com F12 na aba Console e envie o formulário. Mensagens como wpforms is not defined ou jQuery is not defined apontam que a dependencia foi adiada ou removida pela otimização do WP Rocket.
O atributo nowprocket faz a mesma coisa que o campo de exclusão?
Sim. O nowprocket marca um script para o WP Rocket não aplicar o Delay JavaScript Execution, igual a adicionar o caminho no campo de exclusão. A diferenca e que o atributo fica no código do tema, útil para versionar a correção.
Depois de excluir os assets preciso limpar o cache?
Sim. As páginas já cacheadas continuam servindo o formulário com o script adiado até o cache ser regenerado. Use Clear and preload cache no painel do WP Rocket para forcar a recriacao das páginas com a exclusão aplicada.

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