FernandoAcosta.Netdocs

Filtros dos métodos de envio

2 min de leituraAtualizado há 5 dias

Os métodos de envio (Correios, Melhor Envio, Distance Rate, Frete Grátis) se integram ao split via filtros nativos. O Frete para Marketplace já se conecta a todos eles, mas você pode adicionar a sua própria lógica em cima — pra customizar fonte de CEP por método, lógica de Frete Grátis específica, formato de endereço pro Distance Rate.

woocommerce_correios_origin_postcode

Filtra o CEP de origem usado pelo plugin Correios WooCommerce em cada cálculo.

Assinatura

apply_filters(
    'woocommerce_correios_origin_postcode',
    $postcode,
    $method_id,
    $instance_id,
    $package
);

Como o plugin se conecta

Prioridade 100. O plugin substitui o CEP da loja pelo wcsp_vendor_postcode do pacote (quando disponível).

Exemplo: forçar CEP por modalidade

Cobrar SEDEX a partir do CEP do vendedor, mas PAC sempre da loja matriz:

add_filter( 'woocommerce_correios_origin_postcode', function( $postcode, $method_id, $instance_id, $package ) {
    if ( false !== strpos( $method_id, 'pac' ) ) {
        return get_option( 'woocommerce_store_postcode' );
    }
    return $postcode;
}, 200, 4 );

Prioridade 200 pra rodar depois do Frete para Marketplace (que está em 100).

wc_melhor_envio_origin_postcode

Mesma ideia, pra integração com Melhor Envio.

Assinatura

apply_filters(
    'wc_melhor_envio_origin_postcode',
    $postcode,
    $method_id,
    $instance_id,
    $package
);

Como o plugin se conecta

Prioridade 10. Substitui o CEP da loja pelo wcsp_vendor_postcode do pacote.

Exemplo: fallback do Melhor Envio

Se o vendedor não tem CEP cadastrado, usar o CEP da loja em vez de falhar:

add_filter( 'wc_melhor_envio_origin_postcode', function( $postcode, $method_id, $instance_id, $package ) {
    if ( empty( $postcode ) ) {
        return get_option( 'woocommerce_store_postcode' );
    }
    return $postcode;
}, 100, 4 );

wc_distance_rate_origin

Pra integração com Distance Rate Shipping, que precisa de endereço completo (não só CEP) pra calcular distância em km.

Assinatura

apply_filters(
    'wc_distance_rate_origin',
    $address,
    $package,
    $method
);
Parâmetro Descrição
$address String do endereço formatado (gerada a partir do CEP do vendedor)
$package Pacote do WooCommerce com campos wcsp_*
$method Instância do método Distance Rate

Como o plugin se conecta

Prioridade 10. Gera o endereço a partir do CEP do vendedor.

Exemplo: incluir país

Pra lojas que entregam fora do Brasil:

add_filter( 'wc_distance_rate_origin', function( $address, $package, $method ) {
    return $address . ', Brasil';
}, 20, 3 );

woocommerce_shipping_free_shipping_is_available

Filtro nativo do WooCommerce que decide se o método Frete Grátis está disponível pra um pacote.

Assinatura

apply_filters(
    'woocommerce_shipping_free_shipping_is_available',
    $is_available,
    $package,
    $method
);

Como o plugin se conecta

Prioridade 10. Reescreve a avaliação do Frete Grátis pra olhar só o pacote (não o carrinho inteiro), respeitando os 4 modos: min_amount, coupon, both, either.

Exemplo: Frete Grátis exclusivo pra vendedor selecionado

Vendedor 99 sempre tem Frete Grátis, independentemente das regras do método:

add_filter( 'woocommerce_shipping_free_shipping_is_available', function( $is_available, $package ) {
    if ( ! empty( $package['wcsp_vendor_id'] ) && 99 === $package['wcsp_vendor_id'] ) {
        return true;
    }
    return $is_available;
}, 100, 2 );

Prioridade 100 pra rodar depois do Frete para Marketplace.

Exemplo: bloquear Frete Grátis pra vendedor específico

add_filter( 'woocommerce_shipping_free_shipping_is_available', function( $is_available, $package ) {
    if ( ! empty( $package['wcsp_vendor_id'] ) && 88 === $package['wcsp_vendor_id'] ) {
        return false;
    }
    return $is_available;
}, 100, 2 );

Filtros relacionados

Foi útil?