🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir o carrinho do WooCommerce que não funciona com o Elementor Pro

Time Full Services Time Full Services
Tipo WooCommerce
Nome do erro Carrinho do WooCommerce não funciona com Elementor Pro EN: WooCommerce cart not working with Elementor Pro
Severidade Crítico
Descrição O cart do WooCommerce não funcionar com o Elementor Pro significa que o widget Menu Cart ou Cart mostra o contador parado em zero, não abre o painel lateral ou não soma o produto após o clique. Quase sempre vem dos fragments AJAX bloqueados por cache, do script wc-cart-fragments minificado, ou do tema sem suporte ao WooCommerce.

O que é o erro de cart no WooCommerce com Elementor?

O widget de cart do WooCommerce no Elementor Pro (Menu Cart e Cart) exibe o contador de itens, o subtotal e o painel lateral do carrinho montados pelo editor visual em vez do template padrão do tema. Ele depende dos fragments AJAX do WooCommerce: a cada adição, o navegador chama a rota wc-ajax=get_refreshed_fragments e recebe o HTML novo do carrinho sem recarregar a página. Quando essa cadeia quebra, o widget renderiza mas fica congelado, o contador não muda e o cliente acha que o site travou.

Como identificar

  • O ícone do Menu Cart aparece mas o contador fica preso em zero mesmo depois de adicionar produtos.
  • Ao clicar no carrinho, o painel lateral (side cart) do Elementor não abre ou abre vazio.
  • No console do navegador (F12, aba Rede) a chamada wc-ajax=get_refreshed_fragments retorna 403, 404 ou 500.
  • No console aparece o erro de JavaScript ‘wc_cart_fragments_params is not defined’ ou ‘jQuery is not defined’ na página com o widget.
  • O contador atualiza só depois de um F5 manual, sinal clássico de página cacheada servindo o fragment antigo.
Antes de começar: Faça backup e teste em staging antes de mexer em cache, delay de JS ou functions.php de uma loja no ar. Nunca desligue o nonce dos fragments para forçar a atualização: isso abre brecha de CSRF no carrinho.

Como prevenir

  • Mantenha carrinho, checkout e a rota wc-ajax fora do cache em qualquer plugin de performance
  • Deixe os scripts wc-cart-fragments e woocommerce, e o jQuery, fora da minificação, da combinação e do delay de JS
  • Use sempre um tema filho que declare suporte ao WooCommerce antes de montar widgets de loja no Elementor
  • Teste o contador do carrinho como visitante anônimo depois de cada atualização de tema, do Elementor Pro ou do plugin de cache

Causa

  • Plugin de cache servindo a rota wc-ajax=get_refreshed_fragments em cache, devolvendo sempre o mesmo fragment com o contador zerado.
  • Otimização de JavaScript minificando ou combinando o wc-cart-fragments.min.js junto de outros scripts, o que quebra o objeto wc_cart_fragments_params.
  • Tema do site sem a declaração add_theme_support woocommerce, fazendo o Elementor renderizar o widget sem registrar os hooks de fragment do WooCommerce.
  • Defer ou delay de JavaScript adiando o jQuery, de quem o script de fragments depende, e disparando o erro jQuery is not defined antes do carrinho montar.
  • Cookie woocommerce_cart_hash ou woocommerce_items_in_cart barrado por CDN ou modo de cache agressivo, impedindo o navegador de saber que o carrinho mudou.

Como resolver

  1. Confirme que o widget de cart é do WooCommerce e que o WooCommerce está ativo: no editor do Elementor, garanta que o bloco usado é o widget Menu Cart ou Cart da seção WooCommerce, e não um ícone genérico. O widget só funciona com o WooCommerce instalado e ativo, porque ele pendura nos fragments AJAX do próprio WooCommerce.
  2. Exclua as rotas e os scripts do carrinho do cache e da otimização: no plugin de cache ou otimização, marque o carrinho e o checkout como nunca cacheados e tire da minificação e da combinação os dois scripts do WooCommerce abaixo. Sem isso, o fragment volta cacheado ou o JavaScript do carrinho quebra.
    Nunca cachear: /carrinho/ e /finalizar-compra/
    Excluir da minificacao/combinacao de JS: wc-cart-fragments.min.js
    Excluir da minificacao/combinacao de JS: woocommerce.min.js
    Excluir do cache: requisicoes contendo ?wc-ajax=get_refreshed_fragments
  3. Tire o jQuery do delay e do defer: se você usa adiamento de JavaScript (delay JS ou defer), o script de fragments depende do jQuery carregado antes dele. Adicione o jQuery à lista de exclusão do delay para acabar com o erro jQuery is not defined na página do widget.
    Excluir do delay/defer: jquery.min.js
    Excluir do delay/defer: jquery-core
    Excluir do delay/defer: wc-cart-fragments
  4. Inspecione a chamada de fragment no console: abra uma página com o widget, pressione F12, vá na aba Rede, adicione um produto e observe a chamada wc-ajax=get_refreshed_fragments. Se ela retornar 403 ou 500, o firewall ou o WAF está barrando a rota; peça ao host para liberá-la. Se retornar 200 mas o contador não muda, o problema é cache de fragment.
    Rota a observar: /?wc-ajax=get_refreshed_fragments
    Status esperado: 200 com JSON de fragments
  5. Garanta o suporte do tema ao WooCommerce: se o tema não declara suporte ao WooCommerce, o Elementor monta o widget mas os hooks de fragment não registram. Use o código da seção abaixo no tema filho para declarar esse suporte e force a limpeza de todo o cache depois.
    Limpar cache do plugin de cache
    Limpar cache da CDN
    Forcar regeneracao de CSS do Elementor em Elementor -> Ferramentas -> Regenerar arquivos e dados
PHP
// functions.php do tema filho — declara suporte ao WooCommerce e
// garante que os scripts de fragments do carrinho sejam enfileirados
// nas paginas onde o widget de cart do Elementor aparece.
add_action( 'after_setup_theme', function () {
    add_theme_support( 'woocommerce' );
} );

add_action( 'wp_enqueue_scripts', function () {
    if ( function_exists( 'is_woocommerce' ) ) {
        wp_enqueue_script( 'wc-cart-fragments' );
    }
}, 20 );

Perguntas frequentes

O contador do Menu Cart do Elementor fica em zero mesmo com produto no carrinho. Por quê?
Na quase totalidade dos casos é cache servindo o fragment antigo. A rota wc-ajax=get_refreshed_fragments precisa rodar a cada adição e nunca pode estar cacheada. Exclua o carrinho e essa rota do cache e teste de novo como visitante anônimo.
O painel lateral do carrinho do Elementor não abre. O que verificar?
Abra o console com F12 e procure por um erro de JavaScript como jQuery is not defined ou wc_cart_fragments_params is not defined. Ele indica que o delay de JS ou a minificação quebrou o script do carrinho. Tire o jQuery e o wc-cart-fragments do delay e da combinação.
Preciso do Elementor Pro para usar o widget de carrinho?
Sim. Os widgets Menu Cart e Cart fazem parte do conjunto WooCommerce do Elementor Pro e só aparecem com a versão Pro ativa, além do WooCommerce instalado e ativo. Na versão gratuita do Elementor esses widgets não existem.
Funciona quando estou logado como admin, mas não para o cliente. Por quê?
Quase sempre é cache de página. Para o admin o WooCommerce normalmente ignora o cache, então o fragment atualiza; para o visitante anônimo a página vem cacheada com o contador zerado. Marque carrinho e checkout como não cacheáveis e limpe o cache da CDN.
Atualizei o Elementor Pro e o carrinho parou. O que faço primeiro?
Regenere os arquivos do Elementor em Elementor -> Ferramentas -> Regenerar arquivos e dados, limpe todo o cache e cheque no console se algum script do carrinho está com erro. Atualizações costumam invalidar o CSS e o JS antigos que ficaram em cache.
Como sei se o problema é cache ou conflito de plugin?
Se o contador atualiza só depois de um F5, é cache de fragment. Se nem com F5 ele soma e o console mostra erro de JavaScript, é conflito de script. Para isolar conflito, desative os plugins de otimização e teste o widget com o tema padrão ativo.
Meu tema não é do Elementor. O widget de carrinho ainda funciona?
Funciona, desde que o tema declare suporte ao WooCommerce. Sem essa declaração o Elementor renderiza o widget, mas os hooks de fragment do WooCommerce não registram e o contador fica parado. Use um tema filho com o suporte declarado.

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