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

Como corrigir o JetCompareWishlist que não adiciona produtos no WordPress

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro JetCompareWishlist não adiciona produtos EN: JetCompareWishlist not adding products
Severidade Atenção
Descrição O JetCompareWishlist não adiciona produto quando o botão Comparar ou Lista de Desejos é colocado fora de um loop de produtos, quando as páginas de comparação e de lista não estão definidas nas configurações, ou quando o cache, um conflito de JavaScript ou cookies bloqueados impedem a requisição AJAX que salva o item.

O que é JetCompareWishlist que não adiciona produtos?

O JetCompareWishlist é o plugin da Crocoblock que adiciona dois recursos a lojas WooCommerce e listagens JetEngine: comparar produtos lado a lado e salvar produtos numa lista de desejos. O fluxo funciona assim: o visitante clica no botão Comparar ou Lista de Desejos, o plugin dispara uma requisição AJAX, grava o ID do produto em um cookie no navegador e atualiza o contador. Depois, as páginas dedicadas de comparação e de lista de desejos leem esses cookies e exibem os itens salvos.

O sintoma JetCompareWishlist não adiciona produto aparece quando esse fluxo é interrompido em algum ponto. O botão não tem um produto válido para identificar (porque está fora do loop de listagem), as páginas de destino não foram criadas e atribuídas nas configurações do plugin, ou a requisição AJAX é bloqueada por cache de página, conflito de scripts ou cookies desativados. Em qualquer um desses casos o clique não tem efeito visível: o contador continua em zero e a página de comparação ou de desejos abre vazia.

Como identificar

  • O visitante clica no botão Comparar ou Lista de Desejos e nada acontece: o contador continua em zero e o produto não entra na lista.
  • A página de comparação ou a página de lista de desejos abre vazia mesmo depois de clicar no botão em vários produtos.
  • No console do navegador (F12) aparece um erro na requisição AJAX (admin-ajax.php) ao clicar no botão, ou a requisição retorna status diferente de 200.
  • O botão do JetCompareWishlist nem aparece no card do produto, ou aparece mas fica sem reação ao clique.
  • O item some da lista assim que a página é recarregada, indicando que o cookie não foi gravado.
Antes de começar: Antes de mexer em regras de cache, minificação de scripts ou atualizar plugins em produção, faça um backup completo do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para poder reverter caso a listagem ou o checkout quebrem.

Como prevenir

  • Defina as páginas de comparação e de lista de desejos nas configurações do JetCompareWishlist logo na instalação, antes de publicar os botões na loja.
  • Sempre insira os botões Comparar e Lista de Desejos dentro do loop de produtos ou do template de produto único, nunca soltos em uma seção da página.
  • Mantenha as páginas dinâmicas do plugin na lista de exclusão de cache do site para que o AJAX nunca seja servido a partir de HTML estático.
  • Atualize WooCommerce, JetEngine e JetCompareWishlist juntos e valide em staging antes de aplicar em produção, acompanhando as mudanças de compatibilidade da Crocoblock.
  • Configure o banner de consentimento de cookies para liberar cookies funcionais, já que o plugin depende deles para guardar os itens da lista.

Causa

  • O botão Comparar ou Lista de Desejos foi inserido fora de um loop de produtos (Products Loop do WooCommerce, Listing Grid do JetEngine ou template de single product): sem o contexto da listagem o plugin não recebe o ID do produto e o clique não salva nada.
  • As páginas de Comparação e de Lista de Desejos não foram criadas e atribuídas em JetCompareWishlist nas Configurações: sem essas páginas de destino definidas o plugin não tem onde exibir os itens e o fluxo de salvar quebra.
  • Um plugin de cache de página (WP Rocket, LiteSpeed, W3 Total Cache) está servindo HTML estático e bloqueia a requisição AJAX dinâmica que adiciona o produto, ou guarda em cache a página com o contador zerado.
  • Os cookies do navegador estão bloqueados, ou um banner de consentimento LGPD/cookie só libera os cookies após o aceite, impedindo o JetCompareWishlist de gravar o ID do produto no navegador.
  • Um conflito de JavaScript com outro plugin ou com a minificação/combinação de scripts (WP Rocket, Perfmatters, Autoptimize) interrompe o script do JetCompareWishlist antes do clique disparar o AJAX.
  • O WooCommerce está inativo ou desatualizado em uma loja que usa os botões nos produtos do WooCommerce, então o plugin não encontra o objeto de produto esperado para registrar o item.

Como resolver

  1. Crie e atribua as páginas de comparação e lista de desejos: Crie uma página para a comparação e outra para a lista de desejos e atribua as duas nas configurações do JetCompareWishlist. Sem as páginas de destino definidas o plugin não tem onde mostrar os itens e o salvar não conclui.
    Painel WP -> Páginas -> Adicionar nova: crie 'Comparar produtos' e 'Lista de desejos'
    Painel WP -> JetCompareWishlist -> Settings (Configurações)
    Em Compare Page e Wishlist Page selecione as páginas criadas e salve
  2. Coloque o botão dentro de um loop de produtos: Confirme que o botão Comparar ou Lista de Desejos está dentro de um loop de produtos (Products Loop do WooCommerce, Listing Grid do JetEngine ou template de produto único). Fora do loop o botão não recebe o ID do produto e o clique não salva o item.
    Edite o template da listagem (Listing Item do JetEngine ou Products Loop do Elementor)
    Arraste o widget Compare Button ou Wishlist Button para dentro do item do loop
    Salve o template e recarregue a página de listagem para testar o clique
  3. Exclua as páginas do plugin do cache: Adicione as páginas de comparação e de lista de desejos à exclusão de cache e limpe o cache do site. Cache de página servindo HTML estático bloqueia o AJAX que adiciona o item e congela o contador.
    No plugin de cache, abra as regras de exclusão (Never Cache URLs)
    Adicione as URLs /comparar-produtos/ e /lista-de-desejos/
    Limpe todo o cache do site (Purge All) e teste novamente o botão
  4. Libere os cookies e isole conflito de JavaScript: Garanta que os cookies não estão bloqueados pelo banner de consentimento e desative a minificação ou combinação de JavaScript para verificar se um conflito de script trava o clique. O JetCompareWishlist depende de cookies e de seu próprio JS para gravar o produto.
    Configure o banner de consentimento para liberar cookies funcionais por padrão
    Em WP Rocket ou Perfmatters, desative temporariamente Minify/Combine JavaScript
    Abra o console (F12 -> Console) e recarregue para checar erros de JS ao clicar
  5. Atualize WooCommerce, JetEngine e o JetCompareWishlist: Em lojas WooCommerce, confirme que o WooCommerce está ativo e atualizado, e atualize o JetEngine e o JetCompareWishlist para a versão estável mais recente. Versões defasadas quebram a integração que registra o produto na lista.
    Painel WP -> Plugins: confirme WooCommerce ativo e na versão mais recente
    Painel WP -> Plugins -> Atualizações: atualize JetEngine e JetCompareWishlist
    Após atualizar, limpe o cache e teste o botão em um produto
PHP
<?php
/**
 * Exclui as paginas do JetCompareWishlist do cache de pagina.
 * Evita que o HTML estatico em cache bloqueie o AJAX que adiciona o produto.
 */
add_filter( 'rocket_cache_reject_uri', 'full_jcw_excluir_cache' );
function full_jcw_excluir_cache( $uris ) {
    $uris[] = '/comparar-produtos/(.*)';
    $uris[] = '/lista-de-desejos/(.*)';
    return $uris;
}

/**
 * Garante que o cookie do JetCompareWishlist nao seja
 * tratado como estatico pelo cache (mantem a sessao do visitante).
 */
add_filter( 'rocket_cache_dynamic_cookies', 'full_jcw_cookies_dinamicos' );
function full_jcw_cookies_dinamicos( $cookies ) {
    $cookies[] = 'jet-cw-compare';
    $cookies[] = 'jet-cw-wishlist';
    return $cookies;
}

Perguntas frequentes

Por que o JetCompareWishlist não adiciona o produto quando clico no botão
Quase sempre o botão está fora de um loop de produtos, então não recebe o ID do item, ou as páginas de comparação e de lista de desejos não foram atribuídas nas configurações. Coloque o botão dentro do loop e defina as duas páginas em JetCompareWishlist -> Settings.
Preciso definir as páginas de comparação e de lista de desejos
Sim. O JetCompareWishlist precisa de uma página de comparação e uma de lista de desejos atribuídas nas configurações para ter onde exibir os itens. Sem elas o plugin grava o cookie mas não consegue mostrar a lista, e o fluxo parece não funcionar.
O cache pode impedir o botão de adicionar produtos
Pode. Um plugin de cache servindo a página como HTML estático bloqueia a requisição AJAX que adiciona o item e mantém o contador zerado. Adicione as páginas do plugin à exclusão de cache e limpe todo o cache do site.
O botão do JetCompareWishlist funciona fora do WooCommerce
Funciona também com listagens do JetEngine, desde que o botão esteja dentro do loop de listagem que fornece o ID do post ou produto. Em lojas WooCommerce, mantenha o WooCommerce ativo e atualizado para o plugin reconhecer o objeto de produto.
Por que a página de comparação abre vazia mesmo depois de clicar nos botões
Isso indica que o cookie com os produtos não foi gravado, geralmente porque os cookies estão bloqueados, o banner de consentimento não liberou cookies funcionais, ou um conflito de JavaScript travou o script antes de salvar. Libere os cookies e teste sem minificação de JS.
Um conflito de JavaScript pode travar o JetCompareWishlist
Sim. A minificação ou combinação de scripts feita por plugins de otimização pode quebrar o JavaScript do JetCompareWishlist e impedir o clique de disparar o AJAX. Desative temporariamente Minify/Combine JavaScript e verifique o console do navegador em busca de erros.
Como descubro se o erro é do JetCompareWishlist ou de outro plugin
Abra o console do navegador (F12), clique no botão e observe a requisição para admin-ajax.php. Em seguida, desative os plugins de cache e otimização e os demais plugins um a um, recarregando a cada teste, até identificar o que interrompe o salvamento do item.

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