Como corrigir carrinho do WooCommerce que esvazia sozinho
O que é o carrinho do WooCommerce que esvazia sozinho?
O carrinho esvazia sozinho no WooCommerce quando os produtos que o cliente adicionou somem ao navegar entre páginas, ao atualizar ou ao chegar no checkout. O WooCommerce guarda o carrinho numa sessão atrelada a um cookie (woocommerce_cart_hash e wp_woocommerce_session_). Se essa sessão não é lida corretamente a cada visita, a loja trata cada acesso como um carrinho novo e vazio.
Como identificar
- Os produtos adicionados somem ao trocar de página ou ao atualizar.
- A mensagem “Seu carrinho está vazio no momento” aparece logo após adicionar um item.
- O contador de itens do mini-carrinho volta a zero sozinho.
- O problema só ocorre com cache/CDN ativo ou para visitantes não logados.
Como prevenir
- Configure as exclusões de cache (cart, checkout, my-account) já na instalação do plugin de cache
- Mantenha a URL do site consistente (um único domínio canônico, sempre https)
- Teste o fluxo de compra como visitante anônimo após cada mudança de cache ou CDN
Causa
- Plugin de cache de página (ou CDN) servindo a página do carrinho/checkout em cache em vez de excluí-la.
- Cookies do WooCommerce (wp_woocommerce_session_) sendo barrados pelo cache ou pelo proxy reverso.
- Sessões do WooCommerce não persistindo porque a tabela wp_woocommerce_sessions está corrompida ou foi limpa por engano.
- Domínio inconsistente (com e sem www, ou http e https misturados) fazendo o cookie do carrinho não casar.
- Plugin de otimização agressiva descartando o cookie woocommerce_items_in_cart, que sinaliza ao cache para não armazenar a página.
Como resolver
- Exclua carrinho e checkout do cache: no seu plugin de cache, adicione cart, checkout e my-account às páginas nunca armazenadas em cache. WooCommerce já define essas exclusões, mas confirme que estão ativas.
- Preserve os cookies do WooCommerce: garanta que o cache não ignora os cookies wp_woocommerce_session_ e woocommerce_items_in_cart. Eles avisam o cache para entregar uma página dinâmica quando há itens no carrinho.
- Padronize o domínio: em Configurações > Geral, deixe a URL do WordPress e a URL do site idênticas (mesmo www e mesmo https). Cookie criado em www.seusite.com não vale em seusite.com.
- Limpe as sessões do WooCommerce: em WooCommerce > Status > Ferramentas, use "Limpar sessões de cliente" para recriar a tabela de sessões. Faça isso fora do horário de pico.
- Teste sem cache: desative o plugin de cache e adicione um produto ao carrinho. Se o carrinho passa a persistir, o problema é a configuração de cache; reative excluindo as páginas dinâmicas.
# .htaccess - nunca armazenar em cache as paginas dinamicas do WooCommerce
<IfModule mod_headers.c>
SetEnvIf Request_URI "/(cart|checkout|my-account)" NO_CACHE
Header set Cache-Control "no-store, no-cache, must-revalidate" env=NO_CACHE
# nao deixar o proxy descartar o cookie de sessao do carrinho
Header append Vary "Cookie" env=NO_CACHE
</IfModule>














