O plugin troca a origem do frete nestes filtros:
| Filtro | Método | Prioridade do plugin |
|---|---|---|
woocommerce_correios_origin_postcode ($postcode, $method_id, $instance_id, $package) |
Correios | 100 |
wc_melhor_envio_origin_postcode ($postcode, $method_id, $instance_id, $package) |
Melhor Envio | 10 |
wc_distance_rate_origin ($address, $package, $method) |
Distance Rate Shipping | 10 |
woocommerce_shipping_free_shipping_is_available ($available, $package, $method) |
Frete grátis | 10 |
Para mudar o resultado, use prioridade maior que a do plugin.
Vendedor sem CEP válido recebe '' como origem. No Melhor Envio, o plugin também tira as cotações desse pacote em woocommerce_package_rates (prioridade 10), então devolver outro CEP no filtro de origem não basta.
Exemplos
PAC sempre do CEP da loja, SEDEX do CEP do vendedor:
add_filter( 'woocommerce_correios_origin_postcode', function ( $postcode, $method_id ) {
return false !== strpos( $method_id, 'pac' ) ? get_option( 'woocommerce_store_postcode' ) : $postcode;
}, 200, 4 );
Frete grátis sempre para o vendedor 99:
add_filter( 'woocommerce_shipping_free_shipping_is_available', function ( $available, $package ) {
return 99 === (int) ( $package['wcsp_vendor_id'] ?? 0 ) ? true : $available;
}, 100, 2 );
Campos do pacote em Estrutura do pacote.