Shop Pro para WooCommerce
R$ 689.00 / ano
Melhore seu WooCommerce com CEP, frete, entrega, economia, parcelas, descontos e checkout focados em conversão.
Fora de estoque
✅ Melhorias e atualizações de produtos
✅ Garantia de 7 dias para reembolso
✅ Suporte ao cliente
Menos cliques, mais conversão
Uma experiência de compra mais rápida e intuitiva
O Shop Pro aproxima sua loja da experiência dos grandes marketplaces, reduzindo o esforço do cliente e tornando a decisão de compra mais simples.
Controle total para adaptar à sua loja
Requisitos Mínimos
Verifique se sua loja atende aos requisitos antes de instalar o plugin.
| PHP | 7.4 + |
|---|---|
| WordPress | 6.0 + |
| WooCommerce | 6.0 + |
| Requer | WooCommerce |
Registro de alterações
= 2.32.74 =
- CEP & Localização: adiciona popup automático de CEP opcional para visitantes sem CEP salvo, com limite de páginas, modo "sempre abrir até preencher" e delay configurável.
- Performance: abertura automática agendada via requestIdleCallback com fallback, sem AJAX, cálculo de frete ou busca de CEP antes da ação do visitante.
= 2.32.73 =
- Ajuste visual: X do popup de Embalagem para Presente com fonte 25px e prioridade CSS reforçada.
= 2.32.72 =
- Embalagem & Presentes: ajuste visual do botão X do popup, deixando-o preto, maior e sem fundo cinza no hover.
= 2.32.71 =
- Simulador: removida a regra experimental de Frete Grátis nativo do WooCommerce no produto. O método free_shipping não é exibido no simulador; permanece válido apenas no carrinho/checkout conforme regras do WooCommerce.
= 2.32.70 - 2026-06-26 =
- Embalagem & Presentes: adiciona seletor de ordenação das embalagens no painel, abaixo do seletor de produtos.
- Embalagem & Presentes: mantém "Ordem manual do painel" como padrão para preservar lojas existentes.
- Embalagem & Presentes: reforça o botão X de fechamento no cabeçalho do popup.
= 2.32.69 - 2026-06-25 =
- Corrige preservação da opção "Ocultar preço sem estoque" ao salvar a aba Economia & Badges.
- Correção: checkbox "Ocultar preço sem estoque" na aba PIX, Boleto & Parcelas agora lê corretamente o valor salvo em price_display.
- Sem alterações na lógica de PIX/parcelas, simulador, WoodMart ou entrega.
= 2.32.67 - 2026-06-25 =
- Simulador: altera o texto do mínimo do Frete Grátis de "A partir de R$ XXX,XX" para "Acima de R$ XXX,XX", mantendo destaque verde na coluna de valor.
= 2.32.66 - 2026-06-25 =
- Simulador: ajusta o texto do mínimo do Frete Grátis para "A partir de R$ XXX,XX" e aplica o mesmo destaque verde usado no valor "Frete Grátis".
= 2.32.65 - 2026-06-25 =
- Simulador: mantém uma única linha de Frete Grátis e, quando o mínimo nativo ainda não foi atingido, substitui apenas a coluna de valor por "a partir de R$ XXX,XX". Quando o mínimo é atingido, a coluna volta a exibir "Frete Grátis".
= 2.32.64 =
- Simulador: evita duplicação de métodos nativos de Frete Grátis quando o WooCommerce já retorna um Frete Grátis real; mantém apenas o resultado válido e usa "a partir de R$ XXX,XX" somente como informação alternativa quando não houver frete grátis já conquistado.
= 2.32.63 =
- Simulador: quando o Frete Grátis nativo possui valor mínimo, mantém o nome do método como "Frete Grátis" e mostra "a partir de R$ XXX,XX" na coluna de custo, sem repetir "Frete Grátis" como valor.
= 2.32.62 =
- Simulador: move o texto "(a partir de R$ XXX,XX)" do Frete Grátis nativo para o rótulo/nome do método, mantendo a coluna de valor apenas como "Frete Grátis".
= 2.32.61 =
- Simulador: remove validação customizada do valor mínimo do Frete Grátis e volta a permitir o método no cálculo simulado.
- Simulador: exibe o valor mínimo configurado no método nativo como "Frete Grátis (a partir de R$ XXX,XX)" quando disponível.
= 2.32.60 - 2026-06-25 =
- Segurança do simulador: cálculo de frete do produto deixa de alterar temporariamente o carrinho real (
WC()->cart), evitando perda de estado após adicionar/remover itens e atualizações de fragments/mini-cart. - Frete Grátis nativo continua respeitando valor mínimo/cupom usando o
contents_costdo pacote simulado, sem depender do subtotal real do carrinho.
= 2.32.59 - 2026-06-25 =
- Segurança do simulador: removido filtro manual shoppro_sim_filter_free_shipping() após calculate_shipping() para evitar instabilidade em métodos de Frete Grátis nativo.
- O simulador continua enviando contents_cost/cart_subtotal com preço do produto x quantidade e deixa o WooCommerce aplicar a regra de valor mínimo/cupom pelo fluxo nativo.
= 2.32.58 - 2026-06-25 =
- FIX: WoodMart — oculta PIX/parcelas dentro da barra sticky (
.wd-sticky-btn) do produto, evitando exibição indevida no botão fixo.
= 2.32.57 =
- FIX: Compatibilidade visual com cards WoodMart — oculta o bloco simples (
shoppro-inst-simple) quando ele é gerado indevidamente dentro de.wrap-priceem cards de produto, mantendo apenas o bloco compacto do loop. - PRESERVADO: Produto principal, carrinho, checkout, simulador, licença e lógica de parcelas permanecem inalterados em relação à 2.32.56.
= 2.32.56 =
- Corrige duplicação de PIX/Parcelas em cards de relacionados/recently no produto quando o tema gera preço do card fora do hook padrão do loop.
- Reforça proteção para que o JS de variações não atue em Quick Shop/cards WoodMart.
= 2.32.55 =
- Correção: evita que o JS de PIX/Parcelas reprocesse formulários do Quick Shop do WoodMart, prevenindo duplicação no “Ver opções” dentro de loops da página de produto.
= 2.32.54 =
- AJUSTE: PIX/Parcelas no loop/listagem passam a usar modo compacto com container único, sem margens negativas e sem position tricks, reduzindo impacto/truncamento em grids de temas como WoodMart. Produto principal, carrinho e checkout preservados.
= 2.32.53 =
- FIX: color pickers de Estimativa, Economia & Badges e campos inline passam a exibir a cor padrão visual do plugin quando o valor salvo está vazio.
= 2.32.51 =
- Corrige o simulador de frete para respeitar o valor mínimo do Frete Grátis nativo do WooCommerce.
- O frete grátis no produto agora só aparece quando o produto/quantidade simulados atingem o mínimo configurado.
2.32.50 — 2026-06-25
- FIX: preserva cheapest_enabled e fastest_enabled quando a aba salva não envia esses checkboxes no POST, evitando que "Mais barato" e "Mais rápido" sejam desmarcados ao salvar/atualizar outra área.
- FIX: shoppro_admin_color_row() agora exibe o default explícito no color picker quando o valor salvo está vazio; defaults vazios continuam vazios para campos que devem herdar cor do tema.
- AJUSTE: estimativa de entrega alterada para "Chega até amanhã", "Chega até " e "Chega até dia DD/MM". "Chega hoje" e "Retira..." permanecem como antes.
= 2.32.49 =
- FIX: garante que PIX/Parcelas apareçam em produtos variáveis antes da escolha da variação, usando fallback de HTML padrão localizado via PHP.
- FIX: trata variable-subscription como produto variável no cálculo do preço base de PIX/Parcelas.
- FIX: mantém atualização dinâmica ao escolher/limpar variações sem duplicar blocos.
2.32.49 — 2026-06-24
- FIX: em produtos variáveis, restaura o bloco padrão de PIX/Parcelas ao limpar ou inicializar variações, mantendo as condições visíveis antes da escolha da variação.
- FIX: preserva um HTML base do produto para evitar que o evento reset_data do WooCommerce apague o bloco inicial.
- FIX: evita duplicação de PIX/Parcelas em produtos variáveis após selecionar variação.
- FIX: impede que o HTML de preço de variações receba PIX/Parcelas via filtro woocommerce_get_price_html no produto principal; o JS passa a atualizar um único container dedicado.
- FIX: JS remove blocos antigos/stale de PIX/Parcelas dentro do summary e da área .woocommerce-variation-price.
2.32.45 — 2026-06-24
- FIX: aviso "_load_textdomain_just_in_time foi chamada incorretamente" (WordPress 6.7+) corrigido definitivamente. A 2.32.44 adicionou load_plugin_textdomain() no hook init, mas o boot comercial (shoppro_boot() e todos os módulos com __()) continuava rodando em plugins_loaded — que dispara antes do init. Resultado: qualquer __() nos módulos (ex: price-display.php, installments.php) ainda podia acionar o carregamento antecipado do textdomain. Correção arquitetural: (1) textdomain carregado em add_action('init', ..., 0) — prioridade 0, primeira coisa do init; (2) boot comercial movido de plugins_loaded para add_action('init', ..., 5) — depois do textdomain; (3) plugins_loaded mantém apenas shoppro_license_register_admin(), shoppro_license_register_ajax() e o filtro zionlab_registered_plugins, que não chamam __() no momento do registro.
2.32.44 — 2026-06-24
- FIX: aviso "_load_textdomain_just_in_time foi chamada incorretamente" introduzido no WordPress 6.7. O WP 6.7 passou a auto-carregar textdomains na primeira chamada de __(), mas como os includes do plugin rodam no nível raiz do arquivo (antes de qualquer hook), isso disparava o carregamento antes do init. Correção: adicionado load_plugin_textdomain('shop-pro-woocommerce') explicitamente no hook init, conforme documentação oficial do WP 6.7.
2.32.43 — 2026-06-24
- PERF: timeout de todas as chamadas wp_remote_post em license.php reduzido de 7s para 3s. Com o cache forte da 2.32.42 (transient 6h + runtime cache), chamadas remotas são raras — e quando ocorrem, 3s é suficiente para não prejudicar o admin do cliente em caso de instabilidade na ZionLab.
- FIX: removida entrada duplicada do changelog.txt referente à feature price_position (2.32.42 anterior, revertida antes de ir a produção).
2.32.42 — 2026-06-24
- PERF: identificado via Query Monitor (Belles) que o shop pro fazia 4 chamadas para zionlab.com.br por carregamento de tela admin (~2.7s total). Causas: pre_set_site_transient_update_plugins e plugins_api sem cache próprio, disparando chamada remota toda vez que o WP recalculava atualizações (~1x/hora mas múltiplas vezes por request). Correções:
- update checker: runtime cache (static var) impede múltiplas chamadas no mesmo request; transient shoppro_update_check_v2 (6h) evita chamada entre requests; em erro de conexão cacheia por 30min.
- plugins_api: transient shoppro_plugin_info_v2 (6h) — não chama servidor a cada consulta de informação do plugin.
- admin_init: runtime flag estática garante que a revalidação rode no máximo 1x por request.
- Timeout: todas as chamadas wp_remote_post reduzidas de 15s para 7s.
- _shoppro_sc(): invalida automaticamente os dois transients ao salvar novo status de licença, garantindo que ativação/desativação reflita imediatamente no update checker.
- Resultado esperado: 0 chamadas remotas na maioria das telas do admin; 1 chamada a cada 6h para update check; 1 chamada a cada 23h para revalidação de licença.
2.32.41 — 2026-06-24
- FIX: simulador de frete não se ocultava em produtos do tipo variable-subscription (WooCommerce Subscriptions) com todas as variações marcadas como virtual. Causa: o bloco de verificação só tratava o tipo 'variable' (não 'variable-subscription'), e lia get_virtual() do produto pai — que pode ser false mesmo quando todas as variações são virtuais. Correção: adicionado 'variable-subscription' ao bloco de produto variável; verificação passa a inspecionar todas as variações filhas via get_children() — se nenhuma for física (não virtual e não downloadable), o simulador não é exibido.
2.32.40 — 2026-06-22
- FIX: opção "Cálculo automático" do simulador não funcionava quando o CEP era preenchido via barra de localização. Causa: location-bar.js chamava u.click() no botão do simulador em dois pontos, fora do controle do objeto shoppro_shipping_simulator — não havia verificação da flag auto_submit. Ambos os pontos corrigidos: agora verificam window.shoppro_shipping_simulator.auto_submit !== false antes de clicar. O simulator.js já expõe esse objeto (window.shoppro_shipping_simulator) no momento da inicialização.
2.32.39 — 2026-06-22
- FIX: auto_submit no simulator.php simplificado de '! isset($cfg[auto_calc]) || ! empty($cfg[auto_calc])' para '(int)($cfg[auto_calc] ?? 1) !== 0' — elimina ambiguidade de precedência entre isset e empty ao ler o valor 0 do banco de dados.
2.32.38 — 2026-06-21
- NOVO: checkbox "Cálculo automático" na aba Simulador no Produto, seção Configurações do Simulador, após "Exige variação selecionada". Quando desmarcado, o simulador preenche o CEP normalmente (via barra de localização ou localStorage) mas não dispara a cotação automaticamente — o cliente precisa clicar no botão Calcular. Padrão: marcado (comportamento anterior preservado). Implementação: (1) options.php: default auto_calc=1; (2) admin.php: checkbox + save handler; (3) simulator.php: passa auto_submit dinâmico via data-params (em vez de hardcoded true); (4) simulator.js: listener zlcvt:cep_updated agora verifica o.auto_submit antes de acionar n.click().
2.32.37 — 2026-06-21
- FIX: a função compartilhada zionlab_sort_zionlab_submenu_items() (2.32.36), usada por Shop Pro e Video Commerce via function_exists(), criava dependência da implementação carregada primeiro — em produção isso resultou em ordenação incorreta do submenu lateral mesmo com a lógica de ordenação correta nos dois plugins.
- Substituída por implementação isolada com prefixo shoppro_ (sem compartilhamento de nome de função com outros plugins ZionLab), espelhando exatamente o padrão validado no Video Commerce 1.0.25 (submenu-dom-fallback):
- custom_menu_order + menu_order — filtros oficiais do WordPress.
- shoppro_zionlab_sort_submenu_runtime() no hook adminmenu (PHP_INT_MAX) — roda dentro de menu-header.php, antes do HTML do submenu ser impresso.
- shoppro_zionlab_sort_submenu_dom_fallback() — JS que reordena o
- do #toplevel_page_zionlab diretamente no DOM, com retries em 50ms e 250ms para cobrir reordenação tardia por scripts de terceiros. Identifica o Dashboard pelo href (page=zionlab) e label, nunca por posição.
- Critério de desempate adicionado: quando dois labels são idênticos, ordena por slug como segundo critério (determinístico).
2.32.36 — 2026-06-21
- MELHORIA: substituído o fallback JS (zionlab_print_submenu_sort_js, 2.32.34/35) pelo hook PHP adminmenu, alinhado ao padrão descoberto e implementado pelo Video Commerce 1.0.23 (zionlab-adminmenu-sort). O hook adminmenu dispara dentro de wp-admin/menu-header.php, imediatamente antes do HTML do submenu ser impresso — nesse ponto todos os add_submenu_page() de todos os plugins já rodaram e nada mais sobrescreve global $submenu antes do output. Mais robusto que JS (sem flash visual, sem dependência de JavaScript carregar) e mais robusto que menu_order sozinho (não pode ser anulado por outro plugin/tema filtrando custom_menu_order). Função zionlab_sort_zionlab_submenu_items() implementada com nome e lógica IDÊNTICOS ao Video Commerce — graças ao function_exists() guard, apenas o primeiro plugin ZionLab a carregar declara a função; o segundo só registra o hook, sem duplicar execução.
2.32.35 — 2026-06-21
- FIX CRÍTICO: zionlab_print_submenu_sort_js() (2.32.34) identificava o item Dashboard pelo índice items[0] (primeiro
- do submenu), assumindo que ele sempre viria primeiro no DOM. Não é garantido — resultado observado em produção: "ZionLab Plugins" foi ordenado alfabeticamente junto com os demais (ficou por último, depois de Shop Pro e Video Commerce, em vez de fixo no topo). Corrigido: o Dashboard agora é identificado pelo href do link (regex /[?&]page=zionlab(&|$)/ — só dá match no link do dashboard, nunca nos submenus dos plugins que usam page=shop-pro-woocommerce, page=video-commerce-* etc), e é sempre movido para o topo via appendChild antes do restante ordenado.
2.32.34 — 2026-06-21
- FIX: ordenação do submenu ZionLab Plugins continuava sem efeito em alguns ambientes mesmo com os filtros oficiais custom_menu_order + menu_order (2.32.33). Causa provável: tema ou outro plugin (ex: WoodMart) também filtra custom_menu_order e pode retornar false com prioridade que sobrescreve a nossa, ou aplicar menu_order de forma que anula a reordenação de $submenu feita por dentro do nosso callback.
- Prioridade de ambos os filtros (custom_menu_order e menu_order) elevada para PHP_INT_MAX, reduzindo a chance de serem sobrescritos.
- Adicionada rede de segurança definitiva: zionlab_print_submenu_sort_js(), registrada em admin_print_footer_scripts, que reordena o
- do #toplevel_page_zionlab diretamente no DOM via JavaScript após o carregamento da página. Como opera sobre o HTML já renderizado, funciona independente de qualquer filtro PHP de terceiros que tenha bloqueado a reordenação no servidor. Mantém o primeiro item (Dashboard) fixo no topo, ordena o resto via localeCompare('pt-BR').
2.32.33 — 2026-06-21
- FIX: ordenação do submenu ZionLab Plugins corrigida. A 2.32.32 reordenava global $submenu dentro de admin_menu/PHP_INT_MAX — mas com dois ou mais plugins ZionLab fazendo a mesma coisa, havia corrida de execução: o resultado dependia de qual plugin reordenava por último, sem garantia de convergência. Substituído pelos filtros oficiais do WordPress para esse fim: custom_menu_order (habilita reordenação customizada) + menu_order (recebe o array e reordena global $submenu['zionlab'] de dentro do callback). Esses filtros são processados pelo WordPress estruturalmente depois de todos os hooks admin_menu terem rodado, eliminando o problema de timing. Dashboard sempre no topo, demais itens em ordem alfabética (sem acento, sem tags). Também corrigida duplicação acidental de fechamento de bloco (}, 9999) introduzida na 2.32.32 que causava erro de sintaxe.
2.32.32 — 2026-06-18
- FIX: submenu lateral de ZionLab Plugins não respeitava ordem alfabética quando múltiplos plugins ZionLab estavam ativos (cada plugin chama add_submenu_page na ordem em que carrega, não por nome). Adicionada zionlab_sort_submenu(), que reordena $submenu['zionlab'] diretamente após o registro de todos os submenus, mantendo o Dashboard sempre no topo. Registrada em dois hooks (admin_menu prioridade PHP_INT_MAX + admin_head prioridade 1) por segurança. A função é declarada com guard function_exists() para ser compartilhável entre plugins ZionLab sem conflito de redeclaração — segue exatamente o padrão já usado pelo Video Commerce (v1.0.21-zionlab-submenu-order).
2.32.31 — 2026-06-18
- MELHORIA: removida condição count($rates) > 1 no simulador. Badges "Mais barato" e "Mais rápido" agora aparecem mesmo quando há uma única opção de frete — útil quando o plugin de frete (ex: Melhor Envio) retorna apenas uma transportadora elegível para o CEP.
2.32.30 — 2026-06-18
- FIX: dias adicionais somados duas vezes no simulador. woocommerce_package_rates dispara dentro de calculate_shipping — shoppro_delivery_apply_extra_days já soma os dias extras no label e na meta. shoppro_sim_append_delivery_forecast não deve somar de novo. Corrigido: a função agora apenas extrai o prazo já atualizado via shoppro_delivery_extract_days e grava na meta _delivery_forecast para suporte a badges e estimativa (inclusive Melhor Envio).
2.32.29 — 2026-06-18
- FIX: shoppro_sim_append_delivery_forecast() refatorada: (1) recebe $package para calcular dias extras via shoppro_delivery_get_package_extra_days(); (2) usa shoppro_delivery_extract_days() centralizando extração de prazo (Frenet + ME + label); (3) soma dias extras ao prazo; (4) grava meta _delivery_forecast com total correto para badges e estimativa.
- FIX: shoppro_delivery_get_item_extra_days() corrigida para variações: quando a variação não gerencia estoque próprio (managing_stock=false), verifica condição de estoque no produto pai — resolve caso de produto variável com estoque no pai e dias adicionais configurados no pai.
- FIX: shoppro_delivery_apply_extra_days() agora usa shoppro_delivery_extract_days() como fallback ao atualizar meta _delivery_forecast — suporta plugins sem _delivery_forecast como Melhor Envio.
2.32.28 — 2026-06-18
- FIX: badges "Mais rápido" e "Mais barato" no simulador de produto não funcionavam com Melhor Envio. Causa: shoppro_delivery_extract_days() tentava ler _delivery_forecast (meta da Frenet) que o ME não usa; o fallback de regex só capturava o primeiro número do range "X a Y dias". Correção: (1) shoppro_delivery_extract_days() ganhou suporte à meta delivery_time do ME — para range usa o max (Y) como prazo conservador; (2) simulador agora usa shoppro_delivery_extract_days() centralizando a lógica de extração de prazo para todos os plugins de frete.
2.32.27 — 2026-06-18
- FIX: estimativa de entrega ignorava os dias adicionais configurados por produto/variação. Causa: shoppro_delivery_extract_days() lê a meta _delivery_forecast antes do label — mas shoppro_delivery_apply_extra_days() (prioridade 9998) só atualizava o label, não a meta. A estimativa (prioridade 9999) lia a meta intocada e calculava com o prazo original da transportadora. Correção: shoppro_delivery_apply_extra_days() agora também atualiza a meta _delivery_forecast com o prazo total (current + extra), garantindo que a estimativa receba o valor correto.
2.32.26 — 2026-06-18
- FIX: ]; duplicado removido em price-display.php (introduzido na 2.32.25 ao substituir o bloco do cupom virtual). Erro causava PHP Parse error fatal. Sem alteração funcional.
2.32.25 — 2026-06-18
- FIX: helper shoppro_payment_discount_eligible_ids() adicionado em price-display.php. Percorre o carrinho e retorna IDs dos produtos com PIX habilitado (respeita _shoppro_inst_disable_pix por produto e por categoria, para variações retorna o ID do pai). O cupom virtual shoppro-payment-discount passa a usar product_ids dinâmico — o Woo aplica o percentual só nos itens elegíveis. Carrinho misto (produtos com e sem PIX) → desconto aplica apenas nos elegíveis. Carrinho 100% bloqueado → cupom não é aplicado.
2.32.24 — 2026-06-18
- MELHORIA: cupom automático de desconto por método de pagamento passa a respeitar o checkbox "Desativar PIX / Boleto / À Vista" por produto e por categoria. Usa shoppro_inst_cart_has_pix_disabled() — mesma função usada pelo badge visual. Se qualquer produto do carrinho tiver PIX desativado (meta _shoppro_inst_disable_pix no produto ou na categoria), $eligible é forçado para false e o cupom não é aplicado/mantido. Reutiliza infraestrutura existente, sem nova configuração para o lojista.
2.32.23 — 2026-06-18
- FIX: filtros woocommerce_apply_with_individual_use_coupon e woocommerce_apply_individual_use_coupon adicionados. O cupom automático shoppro-payment-discount: (1) pode ser aplicado mesmo quando há um cupom manual individual_use=true no carrinho; (2) não é removido quando um cupom individual_use é aplicado pelo cliente. Garante coexistência total com qualquer combinação de cupons manuais da loja.
2.32.22 — 2026-06-18
- FIX: filtros woocommerce_coupon_error e woocommerce_coupon_message adicionados em price-display.php. Quando o WooCommerce exibe uma mensagem de erro ou aviso referenciando o cupom shoppro-payment-discount, o código técnico é substituído pelo label configurado pelo lojista via str_ireplace. Isso evita que o cliente veja o código interno nas mensagens de checkout.
2.32.21 — 2026-06-18
- FIX: hook woocommerce_checkout_create_order_coupon_item adicionado em price-display.php. Quando o cupom virtual shoppro-payment-discount é salvo no pedido, o item recebe set_code($label) — o pedido, admin, e-mail e ERP recebem o label configurado pelo lojista (ex: Desconto PIX) em vez do código técnico. O código técnico é salvo em meta _shoppro_coupon_code para rastreio interno.
2.32.20 — 2026-06-18
- FIX: três correções no módulo de desconto por método de pagamento: (1) defaults payment_discount_enabled/gateways/label movidos de installments para price_display em options.php; (2) boot passa $o completo para shoppro_payment_discount_register_hooks() — função agora lê pix_discount de $opts['installments'] e configurações de $opts['price_display']; (3) HTML admin corrigido: tbody aninhado (inválido) substituído por tr com classe shoppro-payment-discount-field, JS atualizado para usar seletor de classe.
2.32.19 — 2026-06-18
- NOVO: módulo "Desconto por Método de Pagamento" na aba PIX, Boleto & Parcelas (default OFF). Configurações: checkbox para ativar, seletor multi de gateways ativos, campo de label (nome do cupom no pedido). Usa o % do campo pix_discount existente. Implementado como cupom virtual via woocommerce_get_shop_coupon_data — código técnico fixo shoppro-payment-discount, nunca persiste no banco, individual_use=false (coexiste com cupons manuais). Detecção do método: post_data → $_POST → sessão chosen_payment_method. JS dispara update_checkout ao mudar método. Compatível com FluidCheckout, WoodMart, ERP e NF-e.
2.32.18 — 2026-06-18
- FIX: save da opção "Ocultar preço sem estoque" corrigido. A 2.32.17 moveu o campo para a aba PIX, Boleto & Parcelas mas o handler do case 'installments' não salvava price_display.hide_price_out_of_stock. Corrigido com merge explícito: lê options atual de price_display, atualiza só hide_price_out_of_stock e chama shoppro_update_options — preserva todos os demais campos de price_display sem risco de sobrescrita.
2.32.17 — 2026-06-18
- UX: seção "Produtos Sem Estoque" movida da aba Economia & Badges para o final da aba PIX, Boleto & Parcelas — contexto mais intuitivo para o lojista. Sem alteração funcional.
2.32.16 — 2026-06-18
- FIX: helper shoppro_should_hide_out_of_stock_price() criado em helpers.php como fonte única de verdade para a opção "Ocultar preço sem estoque". Aplicado em price-display.php (filtro woocommerce_get_price_html), shoppro_inst_render() e nos shortcodes shoppro_pix/shoppro_parcelas — garante que preço, PIX e parcelas somam em todos os contextos. Corrigida linha duplicada no save handler do admin.php.
2.32.15 — 2026-06-17
- NOVO: opção "Ocultar preço sem estoque" na aba Economia & Badges (default OFF). Usa woocommerce_get_price_html com prioridade 999999 — PIX e parcelas somem automaticamente junto com o preço, pois ambos leem get_price_html(). Funciona em todos os contextos: loop, página do produto, busca, widgets.
Shop Pro for WooCommerce — Changelog
2.32.14 — 2026-06-17
- FIX: texto dos erros no modal de erro agora em preto (#1a1a1a) e negrito (font-weight:600). Era cinza claro e difícil de ler.
2.32.13 — 2026-06-17
- FIX: modal de erro da 2.32.12 com três correções: (1) removido style="display:none;" do HTML — CSS controla display via .shoppro-modal-open; (2) prioridade do wp_footer alterada de 100 para 5 — HTML do modal agora existe antes do JS rodar; (3) erro inline .woocommerce-error ocultado após captura (errorBox.style.display="none") com guard data-shopproHandled para evitar duplo processamento. Substituído innerHTML por textContent na exibição das mensagens. Adicionado DOMContentLoaded guard no JS de inicialização.
2.32.12 — 2026-06-17
- NOVO: Modal de erro para notificações WooCommerce (aba Carrinho & Checkout → Notificações de Erro, default OFF). Captura mensagens .woocommerce-error injetadas via AJAX com MutationObserver e exibe em popup minimalista: overlay escurecido, card branco com barra vermelha no topo, ícone de alerta, lista de erros, botão X e botão OK. Fecha com ESC, clique no overlay, X ou OK. Compatível com FluidCheckout, WoodMart side cart e qualquer tema Woo padrão. Não depende de biblioteca externa (zero dependências).
2.32.11 — 2026-06-17
- FIX: detecção de mini cart/side cart corrigida em price-display.php. A 2.32.10 usava did_action('woocommerce_before_mini_cart') > 0, que permanece verdadeiro após o mini cart ser renderizado — risco real de sumir o badge do carrinho/checkout em temas que renderizam o header antes do conteúdo. Corrigido para did_action('woocommerce_before_mini_cart') > did_action('woocommerce_after_mini_cart'), que é verdadeiro apenas durante a renderização do widget.
2.32.10 — 2026-06-17
- FIX: badge "Você economiza" não aparece mais no mini cart / side cart (WoodMart e outros temas). A detecção usa woocommerce_before_mini_cart, compatível com qualquer tema que siga o padrão Woo. O badge continua funcionando normalmente na página do carrinho e no checkout.
2.32.9 — 2026-06-16
- FIX: icon-256x256.png regravado como PNG real (o arquivo original enviado era JPEG com extensão .png). icon-128x128.png também regravado por consistência.
- Adicionado assets/images/index.php (padrão do plugin).
2.32.8 — 2026-06-16
- Ícone do plugin (logo ZionLab) adicionado nas telas de atualização e lista de plugins (assets/images/icon-128x128.png e icon-256x256.png).
- Compatibilidade declarada com WordPress 7.0 (Tested up to: 7.0 no readme.txt).
2.32.7 — 2026-06-16
- FIX: validação temporal do signed_payload (2.32.5) não estava logando os casos de expiração (payload_expired) e issued_at no futuro (payload_issued_future), porque o log só disparava quando ok=false — mas nesses casos ok=true (não bloqueante). Corrigido: loga quando reason não está vazio, independente de ok. Agora todos os casos de divergência semântica (product_id, instance, expires_at, issued_at) são logados corretamente.
- FIX: barra invertida visual sobrando no HTML do admin após o comentário da seção "Ordem de Exibição" em PIX, Boleto & Parcelas. Removida.
- DOC: changelog da 2.32.6 corrigido — a opção usa seletor (), não radio buttons.
2.32.6 — 2026-06-16
- PIX, Boleto & Parcelas: nova opção "Ordem de Exibição" no topo da aba — permite escolher se PIX/Boleto aparece primeiro (padrão) ou se Parcelas aparece primeiro. Configurável por seletor no painel: "PIX / Boleto primeiro, Parcelas depois" (default — comportamento anterior) "Parcelas primeiro, PIX / Boleto depois" A opção inst_order afeta todos os contextos de exibição (produto, loop, carrinho, checkout, etc.) de forma consistente.
2.32.5 — 2026-06-15
- Licença: validação temporal do signed_payload (log-only — não bloqueia). _shoppro_vlp() agora verifica, após product_id e instance, dois campos adicionados pelo signer >= 1.1.6: · expires_at: se expirado, loga warning "payload_expired:Xh" — indica possível replay de resposta antiga. Tolerância zero (qualquer expiração é logada). Não bloqueia nesta versão. · issued_at: se mais de 5 minutos no futuro, loga warning "payload_issued_future:Xm" — indica drift de relógio ou cache suspeito. Campos opcionais: se ausentes (signer < 1.1.6), as checagens são puladas. Serão promovidas a bloqueantes na 2.33.0, junto com a assinatura obrigatória (openssl_verify === 1).
2.32.3 — 2026-06-15
- FIX: updates automáticos não apareciam no painel de plugins. Causa: o WC API Manager retorna a resposta de "pluginupdatecheck" em formato PHP serializado (stdClass), não JSON. O plugin chamava json_decode() na resposta, que retorna null para dados serializados — fazendo o check de new_version falhar silenciosamente e o update nunca ser injetado no transient do WordPress. Correção: agora tenta json_decode() primeiro; se retornar vazio e a resposta for serializada (is_serialized()), usa maybe_unserialize(). Mesmo fix aplicado em plugininformation (modal de detalhes do plugin).
2.32.2 — 2026-06-15
- Licença: validação semântica do signed_payload (log-only — não bloqueia). Nova função _shoppro_vlp() verifica, após a verificação criptográfica (_shoppro_vls()), os campos sem ambiguidade de normalização: · product_id: deve ser 152254 (SHOPPRO_PRODUCT_ID) · instance: deve bater com _shoppro_di() do site local Divergências são registradas no log interno com o motivo específico (payload_invalid_json / payload_product_mismatch / payload_instance_mismatch) mas NÃO reprovam a licença nesta versão — isso é para a 2.33.0, após período de observação real. Campos com normalização mais complexa (object/action) e hashes derivados (data_hash/api_key_hash) ficam fora desta versão para evitar o mesmo tipo de risco de bytes que causou o bug da 2.32…
Notas de lançamento mais recentes
- Última atualização: 2026-06-26
- Versão: 2.32.74
- URL: <a href="https://zionlab.com.br/loja/shop-pro-para-woocommerce/" target="_blank" rel="noopener noreferrer">https://zionlab.com.br/loja/shop-pro-para-woocommerce/</a>
- Autor: zionlab
- Versão do WordPress necessária: 6.0
- Versão do WordPress testada até: 7.0
- Versão do PHP necessária: 7.4
Perguntas Frequentes
O Shop Pro for WooCommerce melhora a jornada de compra em lojas WooCommerce, reunindo recursos de CEP, frete, entrega, economia, badges, carrinho e checkout. A ideia é reduzir dúvidas comuns do cliente, como valor do frete, prazo de entrega, endereço e vantagens da compra, deixando o processo mais claro e rápido. Com menos etapas repetidas e mais informações no momento certo, a loja oferece uma experiência mais profissional e orientada à conversão.
Não. Apesar de atuar no carrinho e no checkout, o Shop Pro também melhora etapas anteriores da compra. Ele pode atuar na página do produto com simulador de frete, na navegação com a Barra de Localização, no preenchimento de endereço por CEP, na exibição de estimativas de entrega e na comunicação de economia. Por isso, ele deve ser entendido como um plugin de experiência de compra para WooCommerce, não apenas como um plugin de checkout.
Sim. O recurso foi pensado para criar uma experiência parecida com a de marketplaces como o Mercado Livre, onde o cliente informa sua localização uma vez e a loja usa esses dados ao longo da jornada. No WooCommerce, isso ajuda a reduzir cliques, antecipar informações de frete e entrega e deixar a compra mais simples e rápida.
Sim. O recurso de CEP inteligente pode preencher dados de endereço automaticamente no checkout e também na área Minha Conta > Endereços. Isso reduz erros de digitação, acelera o preenchimento dos dados e melhora a experiência do cliente. O funcionamento depende da validade do CEP informado e da disponibilidade das consultas externas de CEP utilizadas pela loja.
Sim. O Shop Pro permite exibir o cálculo de frete diretamente na página do produto, antes do cliente adicionar o item ao carrinho. Isso é importante porque muitos clientes decidem comprar ou abandonar o produto ainda nessa etapa. Em produtos com variação, a loja pode exigir que o cliente selecione a variação antes do cálculo, evitando resultados incorretos de frete.
Não. O módulo Parcelas & Descontos exibe condições visuais de PIX, boleto, pagamento à vista e parcelamento no cartão, ajudando o cliente a entender melhor as opções de compra. Ele não altera o total do pedido, não aplica desconto real no checkout e não modifica gateways, ERP ou nota fiscal.
O Shop Pro trabalha sobre os métodos de envio configurados no WooCommerce. Ele pode melhorar a forma como frete, prazo, badges e estimativas aparecem para o cliente, mas não substitui os plugins de frete. O funcionamento final depende de como Frenet, Melhor Envio, Correios ou outro método retornam preços, prazos e dados para o WooCommerce.
Sim. O Shop Pro permite organizar a Retirada no Local para que ela apareça de forma mais clara no carrinho, checkout e simulador de frete. A loja pode mover essa opção para o final da lista, evitar que ela concorra visualmente com métodos de entrega, exibir um badge próprio como “Retire na Loja”, usar o texto “Grátis” quando não houver custo e mostrar estimativas específicas como “Retira hoje”, “Retira amanhã” ou “Retira dia XX/XX”. Isso ajuda o cliente a diferenciar entrega de retirada e reduz confusão na escolha do método.
Não necessariamente. A estimativa de entrega depende dos prazos disponíveis nos métodos de envio. Quando o prazo é detectado, o Shop Pro pode transformar essa informação em uma mensagem mais clara para o cliente no produto, carrinho e checkout. Se o método de frete não retornar prazo ou retornar os dados de forma não identificável, a estimativa pode não aparecer. O plugin também pode considerar dias úteis e feriados nacionais fixos.
Sim. O Shop Pro possui painel administrativo com opções para personalizar textos, cores, badges de frete, mensagens de economia, popup da Barra de Localização e estimativas de entrega. Isso permite adaptar o plugin ao visual e à linguagem da loja sem editar código, mantendo uma comunicação mais profissional e coerente com a identidade da marca.
Por enquanto, sim. Nesta versão, os principais recursos de carrinho, checkout, layout de frete, badges e experiência de finalização foram desenvolvidos para funcionar com Fluid Checkout Pro. Isso garante maior controle visual e técnico sobre a apresentação dos métodos de entrega e das informações comerciais. Recursos independentes podem evoluir futuramente, mas a recomendação atual é utilizar o Shop Pro junto com Fluid Checkout Pro para obter a experiência completa.
Cada licença anual é válida para um site. Para usar o Shop Pro em mais de uma loja WooCommerce, é necessário adquirir uma licença para cada instalação. A licença dá direito a atualizações e suporte durante o período contratado. Após o vencimento, o plugin pode continuar instalado na versão já utilizada, mas novas atualizações e suporte ficam condicionados à renovação.
Avaliações
Veja o que outros lojistas estão falando sobre o Shop Pro para WooCommerce.
3 avaliações para Shop Pro para WooCommerce
Clear filtersVocê precisa fazer logged in para enviar uma avaliação.

Lucas Silva –
O recurso que mais gostei foi a barra de localização no estilo Mercado Livre. O cliente informa o CEP logo no começo, em poucos cliques, e a loja já usa essa informação no produto, no carrinho e no checkout. Isso reduz muito a dúvida sobre frete e prazo, porque a pessoa não precisa ficar repetindo o CEP em cada etapa.
Matheus Costa –
Instalei o plugin na minha loja que tem muitos acessos no carrinho e no checkout, e a diferença foi bem perceptível. O simulador de frete no produto, a barra de localização e o preenchimento automático de CEP deixam a jornada muito mais clara para o cliente.
Cristina Salles –
O plugin trouxe exatamente o que eu precisava: menos dúvida e mais clareza na jornada de compra. Antes, muitos clientes chegavam no produto, ficavam inseguros sobre frete, prazo e endereço, e acabavam abandonando. Com o simulador no produto, a barra de localização, os badges de frete e a estimativa de entrega, o cliente entende tudo antes de finalizar. É um plugin pensado para converter melhor, não apenas para “enfeitar” o checkout.