O filtro wcsp_vendor_postcode é o principal ponto de extensão do plugin: ele controla o CEP que será usado como origem do pacote de cada vendedor. Use pra ligar uma fonte customizada de CEP, fazer override por vendedor específico, ou alimentar o plugin em marketplaces sem integração nativa.
Assinatura
apply_filters( 'wcsp_vendor_postcode', $postcode, $vendor_id );
| Parâmetro | Tipo | Descrição |
|---|---|---|
$postcode |
string |
CEP atual (vazio por padrão se ainda não foi resolvido). |
$vendor_id |
int |
ID do usuário do vendedor. |
Retorno: string — o CEP a usar como origem do pacote.
Quando o filtro é chamado
Em todo cálculo de pacote por vendedor, antes do método de envio (Correios, Melhor Envio, etc.) consultar o CEP de origem. Se o filtro retorna vazio, o pacote cai no CEP da loja matriz.
Aplicado em
Os integradores de marketplace (Dokan, YITH, WC Vendors, WCFM, WC Marketplace) já se conectam a este filtro pra preencher o CEP automaticamente — você normalmente não precisa fazer nada. O filtro existe pra casos customizados.
Exemplo 1 — fonte customizada de CEP
Vendedores cadastram o CEP num campo customizado seu (meu_cep_origem):
add_filter( 'wcsp_vendor_postcode', function( $postcode, $vendor_id ) {
$custom = get_user_meta( $vendor_id, 'meu_cep_origem', true );
return $custom ?: $postcode;
}, 10, 2 );
A prioridade 10 deixa o filtro do marketplace (que roda antes) ainda ser o padrão; o seu só assume quando o campo customizado está preenchido.
Exemplo 2 — override por vendedor específico
Vendedor 42 entrega de um galpão em outro CEP, diferente do endereço da loja:
add_filter( 'wcsp_vendor_postcode', function( $postcode, $vendor_id ) {
if ( 42 === $vendor_id ) {
return '04567-000';
}
return $postcode;
}, 20, 2 );
A prioridade 20 (acima do 10 padrão) garante que o override sobrescreva o CEP normal do vendedor.
Exemplo 3 — marketplace customizado (sem integração nativa)
Se você usa um marketplace sem suporte built-in, precisa alimentar o plugin com o CEP. Combine com um filtro que também marca o vendedor de cada produto (não mostrado aqui — depende do marketplace) e:
add_filter( 'wcsp_vendor_postcode', function( $postcode, $vendor_id ) {
return get_user_meta( $vendor_id, '_meu_marketplace_cep', true );
}, 10, 2 );
Exemplo 4 — fallback por região
Vendedor sem CEP preenchido entra com CEP da loja matriz como fallback (em vez de cair pro CEP padrão do WooCommerce):
add_filter( 'wcsp_vendor_postcode', function( $postcode, $vendor_id ) {
if ( empty( $postcode ) ) {
return get_option( 'woocommerce_store_postcode' );
}
return $postcode;
}, 99, 2 );
Prioridade 99 pra rodar depois dos integradores e só preencher se ninguém preencheu.
Os métodos de envio (Correios, Melhor Envio) lidam tanto com '01001000' quanto com '01001-000'. Use o formato que sair do seu cadastro — o plugin não normaliza pra você.
Onde o filtro é aplicado no código
Arquivos do plugin que aplicam este filtro:
/includes/class-split-shipping-package.php— leitura padrão do CEP no fluxo central do split./includes/marketplaces/dokan/class-dokan.php— leitura específica do Dokan (perfil do vendedor).
Os outros marketplaces preenchem o CEP de outras formas (e expõem a struct wcsp_vendor_postcode direto no pacote), mas o filtro continua disponível pra override em qualquer marketplace.
Filtros relacionados
wcsp_package_name— customizar o título do pacote no checkout.- Filtros dos métodos de envio —
woocommerce_correios_origin_postcode,wc_melhor_envio_origin_postcode, etc.