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
- Filtros de comportamento por marketplace — toggles por marketplace (
wc_split_shipping_*). wcsp_vendor_postcode— fonte global do CEP por vendedor.- Estrutura do pacote — referência dos campos
wcsp_*que ficam disponíveis em cada filtro.