Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🔧 Como corrigir o botão adicionar ao carrinho em falta no WooCommerce

🔧 Como corrigir o botão adicionar ao carrinho em falta no WooCommerce

Porque é que o botão «Adicionar ao carrinho» desaparece dos produtos WooCommerce

Estava a configurar a sua loja, adicionou uma dúzia de produtos, mas quando abre a página não há nada onde o botão «Adicionar ao carrinho» deveria estar. Os clientes não podem comprar. Pânico. Mas o problema é mais fácil de resolver do que pode parecer à primeira vista.

Existem exatamente cinco razões para o botão desaparecer: desde uma ficha de produto incompleta até ao mod_security do lado do servidor. Duas delas resolvem-se em dois cliques. Mais duas com um par de linhas de código. E apenas uma requer contactar o seu fornecedor de alojamento. Abaixo está uma análise passo a passo com código, capturas de ecrã e ações específicas.

💡 Visão geral rápida:

  • Verifique primeiro a ficha de produto: preço e estado de stock são obrigatórios
  • Desative todos os plugins de uma vez e ative apenas o WooCommerce: se o botão aparecer, a culpa é de um conflito
  • Vá ao personalizador do tema: o botão pode estar simplesmente oculto por um interruptor
  • Corrija o template do tema através do editor de código: substituir três linhas no single.php
  • Abra a consola do navegador: erro de JavaScript → contacte o seu alojamento, o problema é o mod_security

1. Verifique a ficha de produto: preço e estado de stock

O WooCommerce mostra o botão «Adicionar ao carrinho» apenas quando o produto pode ser comprado. Se não pode ser comprado, não há botão. Lógica simples.

Abra Produtos → Todos os produtos → selecione o problemático → Editar. No bloco «Dados do produto», verifique três campos:

  • Preço: o preço normal é obrigatório, mesmo que o produto esteja em promoção. O campo «Preço» não pode estar vazio.
  • Estado de stock: «Em stock» ou «Disponível por encomenda». O valor «Esgotado» oculta o botão.
  • Produtos variáveis: cada variação deve ter o seu próprio preço e estado de stock.

Erro comum: criou um produto variável, adicionou atributos (cor, tamanho), mas não introduziu preços para variações específicas. Neste caso, o WooCommerce não sabe a que preço vender e simplesmente não mostra o botão.

Preencheu → Atualizar → abra a página do produto no site. Na maioria dos casos simples, o problema já está resolvido neste passo.

2. Encontre o conflito de plugins

O WordPress monta o código a partir do tema ativo e de todos os plugins ativos. Se dois plugins usarem nomes de funções idênticos, se ligarem aos mesmos hooks ou forem simplesmente incompatíveis, o WooCommerce pode perder o botão.

Procedimento de diagnóstico:

  • Vá a Plugins → Instalados. Selecione todos (caixa de seleção no topo), no menu suspenso «Ações em massa» escolha «Desativar» → Aplicar.
  • Ative apenas o WooCommerce. Abra a página do produto problemático.
  • O botão apareceu: conflito confirmado. Ative os plugins um a um, verificando a página do produto após cada um. O plugin após cuja ativação o botão desaparecer novamente é o culpado.
  • Substitua o plugin problemático por uma alternativa ou contacte o seu programador.

Um subtipo separado deste problema é um conflito com o filtro woocommerce_show_variation_price. Alguns temas e plugins retornam false para este hook, e o WooCommerce oculta o preço da variação e perde o botão. Se o botão estiver no lugar depois de desativar todos os plugins, mas não houver um «culpado» visível, verifique o functions.php do tema ativo por linhas que contenham woocommerce_show_variation_price.

Pode forçar a exibição com este filtro:

1add_filter('woocommerce_show_variation_price', function() {
2 return true;
3});

Insira este código no functions.php do seu tema ativo (filho) ou através do plugin Code Snippets. Depois de guardar, verifique o produto.

Adicionar um filtro PHP através do editor de código do WordPress

3. Personalizador do tema: o interruptor invisível

Alguns temas adicionam o seu próprio interruptor de visibilidade do botão. A lógica dos programadores: «vamos dar flexibilidade aos utilizadores». Na prática, o interruptor vem por defeito como «ocultar» e o dono da loja não sabe disso.

Vá a Aparência → Personalizar. Procure uma secção:

  • WooCommerce → Página de produto (ou Conteúdo → WooCommerce, dependendo do tema);
  • Parâmetro «Botão Adicionar ao carrinho» → Visível (ou «Mostrar»).

Guarde as configurações e verifique o produto. Isto funciona para temas que usam secções do personalizador para WooCommerce além do template padrão. É popular em temas do ThemeForest: Avada, Flatsome, WoodMart.

4. Corrija o template do tema no editor

Se os passos anteriores não ajudaram, o problema é mais profundo: o tema usa um template de página de produto não padrão e não chama a função do WooCommerce que produz o botão.

O que está a acontecer. O WordPress carrega a página de produto através do ficheiro do tema single.php (ou index.php como alternativa). Dentro, há uma chamada get_template_part() que inclui o bloco de conteúdo. O tema deveria passar o controlo ao WooCommerce chamando wc_get_template_part('content', 'single-product'), mas alguns temas não o fazem. Resultado: o layout do tema está lá, mas o botão não.

Como corrigir:

  • Aparência → Editor de ficheiros do tema. Confirme o aviso do WordPress.
  • Na coluna da direita, encontre os ficheiros single.php e index.php:
Lista de ficheiros do tema no editor de código do WordPress
  • Abra o single.php (se existir). Se não, o index.php.
  • Encontre a linha com get_template_part. Substitua todo o bloco de saída de conteúdo por:
1if (is_singular('product')) {
2 wc_get_template_part('content', 'single-product');
3} else {
4 wc_get_template_part('content', get_post_format());
5}
  • Guarde o ficheiro.
Código final do modelo de produto com chamada WooCommerce

Antes de editar, faça uma cópia de segurança do ficheiro do tema. Copie o conteúdo para um editor de texto ou use um tema filho: editar diretamente o tema principal será reposto na próxima atualização.

Depois de guardar, abra a página do produto. O botão deverá aparecer.

5. Problema do servidor: mod_security bloqueia scripts

Se chegou até aqui e o botão ainda não está lá, a causa está muito provavelmente do lado do servidor. O módulo mod_security (firewall Apache/LiteSpeed) bloqueia o carregamento dos ficheiros JavaScript do WooCommerce. Sem JavaScript, o carrinho não funciona.

Diagnóstico:

  • Abra a página do produto problemático.
  • Pressione F12 → separador Consola.
  • Procure um erro de carregamento de script do WooCommerce, geralmente cart.min.js, add-to-cart.min.js ou jquery.blockUI.min.js com o código 403 Forbidden.
  • Se o vir, o problema é o mod_security.

Solução: contacte o seu fornecedor de alojamento e peça-lhe para adicionar uma exceção para o caminho URL /wp-content/plugins/woocommerce/ nas regras do mod_security. O suporte resolve isto em poucos minutos.

Em alternativa, desative o mod_security para o domínio via .htaccess (se o seu alojamento permitir):

1<IfModule mod_security.c>
2 SecFilterEngine Off
3 SecFilterScanPOST Off
4</IfModule>

Mas é melhor coordenar com o seu alojamento: em alojamento partilhado, o mod_security protege o servidor inteiro e desativá-lo cria um risco de segurança.

Tabela resumo: o que verificar

Problema

Sintoma

Tempo para resolver

Ficha de produto não preenchida

Botão em falta num produto específico

2 min

Conflito de plugins

Botão desapareceu após instalar um novo plugin

5-15 min

Personalizador do tema

Botão em falta em todos os produtos, tema ThemeForest

1 min

Código do template

Botão em falta, tema personalizado ou obscuro

5 min

mod_security

Erro JS na consola (403)

Chamada para o alojamento

Guia em vídeo detalhado cobrindo todos os cinco passos: da ficha de produto à edição de templates e diagnóstico do servidor.

⁉️🤔 Perguntas frequentes

O botão desapareceu apenas para produtos variáveis. O que se passa?

Quase de certeza que os preços das variações não estão preenchidos. Abra o produto, separador «Variações», expanda cada uma: o campo «Preço» deve estar preenchido. Um preço de variação vazio significa que o WooCommerce considera o produto «não está à venda» e remove o botão. Para 50 ou mais variações, use a importação CSV: Produtos → Importar.

O botão desapareceu após uma atualização do tema. O que devo fazer?

A atualização do tema sobrescreveu o single.php. Restaure a edição do passo 4. Para evitar repetir isto a cada atualização, mova o template para um tema filho: crie uma pasta /woocommerce/ no tema filho e copie o single-product.php corrigido para lá.

Posso restaurar o botão sem editar código?

Sim, em metade dos casos: verifique a ficha de produto (passo 1) e o personalizador do tema (passo 3). O código só é necessário quando o tema produz o template do produto de forma não padrão ou quando um plugin ou tema suprime o hook woocommerce_show_variation_price.

O botão está lá, mas não funciona. Clica e não acontece nada?

Isto é um erro de JavaScript. Abra a consola do navegador (F12) e veja quais os scripts que estão a falhar. Na maioria das vezes, é um conflito de versão do jQuery (o tema carrega um jQuery antigo sobre o padrão do WordPress) ou JS minificado em cache que não foi atualizado. Limpe a cache do seu plugin de cache e regenere os scripts minificados.

Preciso de desativar o AJAX de adicionar ao carrinho?

Apenas para diagnóstico. Vá a WooCommerce → Configurações → Produtos e desmarque «Ativar botões de adicionar ao carrinho com AJAX». Se o botão aparecer depois disto, o problema está no manipulador de AJAX do seu tema específico. Deixe o AJAX desativado ou substitua o tema.

O que fazer se o botão ainda não apareceu

Os cinco passos acima cobrem a grande maioria dos casos em que o botão «Adicionar ao carrinho» desaparece. Se nenhum deles funcionou, o problema é mais profundo e requer depuração manual.

Lista de verificação rápida de último recurso:

  • Mude o tema para Storefront, o tema oficial do WooCommerce. O botão apareceu? O problema está no seu tema.
  • Verifique WooCommerce → Estado → Ações agendadas por tarefas cron bloqueadas.
  • Vá a WooCommerce → Estado → Registos e procure por fatal-errors dos últimos dias.

Ainda sem sorte? Descreva a sua situação nos comentários: versão do WooCommerce, nome do tema, lista de plugins ativos. Encontraremos a causa.