O plugin já reconhece automaticamente os principais plugins de frete brasileiros (ver Integrações com plugins de frete). Para plugins não suportados nativamente, há dois caminhos — depende de como o plugin de frete expõe o prazo.
Cenário 1 — o plugin de frete coloca o prazo no label
Se o plugin de frete renderiza o método com o prazo dentro do texto (ex: Express (5 dias úteis), Premium (3 to 5 days)), o plugin já funciona automaticamente: ele encontra os números no label e soma os dias adicionais.
Você só precisa intervir se:
- O label tem outros números que não são prazo (CEP, código de serviço) e estão sendo substituídos por engano.
- O número que representa o prazo está em uma posição não esperada dentro do label.
Para esses casos, use o filtro wc_additional_days_per_product_not_replace:
add_filter( 'wc_additional_days_per_product_not_replace', function( $skip, $index, $rate ) {
// Não substituir o primeiro número do label (provável CEP)
if ( $index === 0 ) {
return true;
}
return $skip;
}, 10, 3 );
$index é a posição do número no label, começando em 0. Ex: em Express 12345 (5 dias), $index=0 é o 12345 e $index=1 é o 5.
Cenário 2 — o prazo está em um metadado do método
Se o plugin de frete não mostra o prazo no label, mas armazena em um metadado (meta_data) do WC_Shipping_Rate, use o filtro wc_adpp_additional_days_custom_metadata para indicar a chave do metadado.
Como descobrir a chave do metadado
Ative o debug do plugin (ver Debug e logs) e adicione um produto ao carrinho. Nos logs, você verá os metadados de cada método de envio em uma chamada como:
Array (
[id] => meu-frete:1
[label] => Express
[meta_data] => Array (
[meu_prazo_de_entrega] => 5
[outro_meta] => xpto
)
)
Identifique qual chave contém o número de dias — no exemplo acima, é meu_prazo_de_entrega.
Registrar a integração
add_filter( 'wc_adpp_additional_days_custom_metadata', function( $custom_meta, $meta_data, $rate ) {
if ( str_contains( $rate->get_method_id(), 'meu-plugin-frete' ) ) {
return 'meu_prazo_de_entrega';
}
return $custom_meta;
}, 10, 3 );
Parâmetros:
$custom_meta(string|false) — chave do metadado. Inicialmentefalse.$meta_data(array) — todos os metadados disponíveis no método.$rate(WC_Shipping_Rate) — o método de envio sendo processado.
Retorne:
- A string com a chave quando o método pertence ao plugin que você quer integrar.
- O valor original (
$custom_meta) caso contrário — para não interferir com outros métodos.
A partir desse ponto, sempre que esse método aparecer no checkout, o plugin lê o metadado, soma os dias adicionais e atualiza o valor.
Cenário 3 — múltiplos plugins de frete customizados
O filtro pode tratar vários plugins ao mesmo tempo:
add_filter( 'wc_adpp_additional_days_custom_metadata', function( $custom_meta, $meta_data, $rate ) {
$method_id = $rate->get_method_id();
if ( str_contains( $method_id, 'frete-x' ) ) {
return 'prazo_frete_x';
}
if ( str_contains( $method_id, 'frete-y' ) ) {
return 'tempo_y';
}
return $custom_meta;
}, 10, 3 );
Cenário 4 — quando o metadado não tem o número direto
Se o metadado contém algo como 5 dias úteis (string com texto) em vez de só 5 (número), o plugin pode não interpretar corretamente. Nesse caso, use o filtro wc_adpp_additional_days para ajustar o cálculo manualmente:
add_filter( 'wc_adpp_additional_days', function( $days, $product, $variation, $cart_item ) {
// logic personalizada
return $days;
}, 10, 4 );
Ou intercepte o método antes via woocommerce_package_rates e modifique o label/metadado para um formato que o plugin reconheça.
Validar a integração
Depois de registrar o filtro, ative o debug e teste no checkout. O log vai mostrar se o cálculo foi acionado e qual valor foi somado.
Detalhes em Debug e logs.