Woocommerce

WooCommerce sem métodos de entrega no checkout: como achar a área errada

O cliente digita o CEP e o checkout responde “Não existem métodos de entrega disponíveis”. Quase nunca é bug do WooCommerce: ou a área de entrega não cobre aquele CEP, ou o método existe dentro dela e está desligado. A checagem começa em WooCommerce > Configurações > Entrega.

A ordem de checagem nas áreas de entrega

  1. A área tem região? Área salva sem país, estado ou faixa de CEP não casa com endereço nenhum.
  2. O método dentro da área está ativo? O botão apaga fácil e passa despercebido depois de uma importação.
  3. A Taxa fixa está com o campo Custo vazio? Custo vazio não gera taxa, e o método some em vez de aparecer zerado.
  4. Existe a área “Locais não cobertos por suas outras áreas” com algum método? É ela que atende quem ficou de fora.
  5. Tem frete grátis na área e a opção “Ocultar taxas de envio quando frete grátis estiver disponível” marcada? Ela apaga o resto da lista.

Ligue o modo de depuração antes de concluir que não resolveu

Em Entrega > Opções de entrega existe a caixa “Ativar modo de depuração”. Ela mostra qual área casou com o endereço e ignora o cache de taxas, guardado na sessão do cliente sob um hash do pacote. É por isso que você mexe na área e continua vendo o resultado velho. Pela CLI:

sudo -u www-data wp option update woocommerce_shipping_debug_mode yes
sudo -u www-data wp transient delete shipping-transient-version

Quando a configuração está certa e o método some assim mesmo

Aí eu ligo o filtro que roda depois de todos os métodos calcularem. Vai no functions.php do tema filho, com WP_DEBUG_LOG ligado:

add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
    error_log( 'CEP: ' . ( $package['destination']['postcode'] ?? '' ) );
    error_log( 'taxas: ' . implode( ', ', array_keys( $rates ) ) );
    return $rates;
}, 9999, 2 );

Recarregue o checkout e leia o wp-content/debug.log. Array vazio quer dizer que nenhum método foi gerado, e o problema está na área ou no custo. Array cheio, com chaves tipo flat_rate:3, e mesmo assim tela vazia quer dizer que alguém filtrou depois de você: plugin de frete grátis condicional, de restrição por produto ou dos Correios.

Achou o culpado, tire o snippet e o modo de depuração do ar: filtro esquecido em produção grava uma linha no log a cada carrinho.

Post Recentes

Erro 429 na API de IA: backoff exponencial em PHP com retry e usleep

Seu script em lote morre no meio com HTTP 429 Too Many Requests? Leia o header Retry-After e troque o…

10 horas atrás

usort PHP: ordenar array de arrays por um campo com o spaceship

Ordene uma lista de produtos por preço em uma linha de PHP 8.3, sem montar colunas separadas pro array_multisort, e…

2 dias atrás

Ativar WP_DEBUG_LOG no WordPress: log de erros sem aparecer na tela

Tela branca ou fatal error no site e o visitante não pode ver a mensagem. Grave os erros do WordPress…

2 dias atrás

CNPJ alfanumérico Magento 2: módulo grátis com máscara e validação

Módulo gratuito Roger_CnpjAlfanumerico que aplica máscara e validação do novo CNPJ alfanumérico no checkout e formulários do Magento 2 e…

3 meses atrás

CNPJ alfanumérico no WooCommerce: plugin grátis de máscara e validação

A partir de 06/07/2026 a Receita passa a emitir CNPJ alfanumérico. Conheça o plugin grátis que aplica máscara e validação…

3 meses atrás

Como remover um modulo do Magento 2

Para remover um módulo do Magento 2, siga os passos abaixo: 1. Desabilitar o módulo Primeiro, desabilite o módulo usando…

2 anos atrás