Como corrigir o botão Adicionar ao carrinho que não funciona no WooCommerce
O que é o botão Add to Cart no WooCommerce?
O botão Adicionar ao carrinho é o que envia o produto para o carrinho do WooCommerce, normalmente via AJAX para que a página não recarregue. Quando ele não funciona, o cliente clica e o item não aparece no mini-carrinho, o contador não muda, ou a página recarrega vazia. É um erro de topo de funil que mata a venda antes mesmo do checkout, porque o cliente desiste sem nunca chegar a finalizar a compra.
Como identificar
- O botão ‘Adicionar ao carrinho’ fica girando (loading) e o produto nunca aparece no carrinho.
- Ao clicar, a página recarrega mas o contador do mini-carrinho continua em zero.
- No console do navegador (F12) aparece ‘admin-ajax.php 400/403/500’ ou um erro de JavaScript ‘wc_add_to_cart_params is not defined’.
- O botão mostra ‘Selecione opções’ ou ‘Leia mais’ e leva à página do produto em vez de adicionar direto, mesmo em produto simples.
Antes de começar: Faça backup e teste em staging antes de desativar plugins ou trocar o tema em uma loja no ar. Nunca remova o nonce do botão de adicionar ao carrinho para ‘resolver’ o AJAX: isso abre brecha de CSRF.
Como prevenir
- Mantenha os scripts do WooCommerce fora da minificação e combinação de JS, e carrinho e checkout fora do cache
- Teste o botão de adicionar ao carrinho como visitante anônimo após cada atualização de tema, plugin ou cache
- Acompanhe o console do navegador e WooCommerce > Status > Logs para detectar erros de AJAX antes que afetem as vendas
Causa
- Requisições AJAX para wc-ajax=add_to_cart ou para admin-ajax.php bloqueadas por firewall/WAF ou retornando 403/500.
- Conflito de plugin de cache ou de otimização que minifica ou combina o JS do WooCommerce e quebra o script add-to-cart.min.js.
- Tema com template de produto customizado que não carrega o wc_add_to_cart_params (jQuery ausente ou enfileirado fora de ordem).
- Produto sem preço definido, fora de estoque ou marcado como variável sem variações configuradas, fazendo o WooCommerce esconder ou desabilitar o botão.
- Opção 'Habilitar adição ao carrinho via AJAX nas páginas de arquivo' desligada combinada com cache servindo um nonce expirado.
Como resolver
- Confirme o produto e o estoque: em Produtos, abra o item e verifique se ele tem preço definido, está com estoque disponível e, se for variável, tem ao menos uma variação configurada. Sem preço ou sem estoque o WooCommerce não mostra o botão de comprar.
- Teste com tema padrão e plugins desativados: ative um tema padrão (Storefront ou Twenty Twenty-Four) e desative todos os plugins exceto o WooCommerce. Se o botão voltar a funcionar, reative um a um para isolar o conflito.
- Exclua o JS do WooCommerce da otimização: no plugin de cache/otimização, remova os scripts do WooCommerce (add-to-cart, cart-fragments) da minificação e da combinação de JS, e marque carrinho e checkout como nunca cacheados.
- Verifique o AJAX no console: abra um produto, pressione F12, vá em Rede, clique em adicionar e veja se a chamada wc-ajax=add_to_cart ou admin-ajax.php retorna 403/500. Se sim, peça ao host ou ao WAF para liberar essas rotas.
- Atualize WooCommerce e o tema: atualize o WooCommerce e o tema e cheque em WooCommerce > Status se há templates desatualizados marcados em vermelho, que podem conter uma versão antiga do botão de adicionar ao carrinho.
PHP
// functions.php do tema filho — garante que o script add-to-cart via AJAX
// seja carregado em todas as paginas de loja, inclusive arquivos e busca
add_action( 'wp_enqueue_scripts', function () {
if ( function_exists( 'is_woocommerce' ) && ( is_shop() || is_product_category() || is_product() ) ) {
wp_enqueue_script( 'wc-add-to-cart' );
wp_enqueue_script( 'wc-cart-fragments' );
}
}, 20 );
Perguntas frequentes
Cliquei em adicionar ao carrinho e nada acontece. Por onde começo?
Abra o console do navegador com F12 e tente de novo. Um erro de JavaScript ou uma chamada admin-ajax.php retornando 403/500 indica conflito de plugin, tema ou bloqueio de AJAX. Teste com tema padrão e plugins desativados para isolar a causa.
Por que o botão aparece como 'Selecione opções' em vez de adicionar direto?
Isso acontece em produtos variáveis: o WooCommerce não adiciona ao carrinho até o cliente escolher uma variação. Se o produto deveria ser simples, confira se ele não foi salvo como variável sem variações configuradas no editor de produto.
Um plugin de cache pode quebrar o botão de adicionar ao carrinho?
Sim. Se o cache minifica ou combina o JavaScript do WooCommerce, o script de AJAX pode quebrar, e o botão para de responder. Exclua os scripts do WooCommerce da otimização e marque carrinho e checkout como não-cacheáveis.
O botão some completamente do produto. O que verificar?
Confira se o produto tem preço definido e estoque disponível. O WooCommerce esconde o botão de comprar quando o item está sem preço, fora de estoque ou marcado como esgotado nas configurações de inventário.
Funciona no meu computador mas não no do cliente. Por quê?
Geralmente é cache do navegador ou da CDN servindo uma versão antiga do JavaScript, ou uma extensão bloqueando scripts. Limpe o cache da CDN, teste em aba anônima e confirme que nenhum bloqueador está barrando o admin-ajax.php.
O erro 'wc_add_to_cart_params is not defined' aparece no console. O que é?
Significa que o script do WooCommerce que carrega os parâmetros de AJAX não foi enfileirado, normalmente por um tema que não chama o wp_enqueue ou por jQuery ausente. Atualize o tema ou force o carregamento dos scripts wc-add-to-cart e wc-cart-fragments.














