FernandoAcosta.Netdocs

Filtro wcsp_vendor_postcode

3 min de leituraAtualizado há 5 dias

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.

CEP sem máscara

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

Foi útil?