Lista completa de filtros expostos pelo plugin, agrupados por área de atuação. Use no functions.php do tema, num plugin auxiliar ou num MU plugin.
Cotação de frete
wc_melhor_envio_ignore_method
Pula completamente o cálculo do método. Retorne uma string truthy pra abortar.
add_filter( 'wc_melhor_envio_ignore_method', function( $should_ignore ) {
if ( is_admin() ) {
return 'admin context';
}
return $should_ignore;
} );
wc_melhor_envio_origin_postcode
Sobrescreve o CEP de origem. Útil pra lojas com múltiplos galpões.
Argumentos: $postcode, $method_id, $instance_id, $package.
add_filter( 'wc_melhor_envio_origin_postcode', function( $postcode, $method_id, $instance_id, $package ) {
// Despachar produtos da categoria "frio" de outro CEP
foreach ( $package['contents'] as $item ) {
if ( has_term( 'frio', 'product_cat', $item['product_id'] ) ) {
return '04567000';
}
}
return $postcode;
}, 10, 4 );
wc_melhor_envio_product
Modifica os dados do produto antes de mandar pro Melhor Envio.
Argumentos: $product_data, $item, $shipping_method.
add_filter( 'wc_melhor_envio_product', function( $data, $item, $method ) {
// Aplica peso mínimo
if ( $data['weight'] < 0.3 ) {
$data['weight'] = 0.3;
}
return $data;
}, 10, 3 );
wc_melhor_envio_insurance_value
Ajusta o valor declarado (seguro). Veja valor declarado e seguro.
Argumentos: $insurance_value, $package.
add_filter( 'wc_melhor_envio_insurance_value', function( $value, $package ) {
return min( $value, 5000 );
}, 10, 2 );
wc_melhor_envio_quote_params
Modifica os parâmetros enviados pra API de cotação.
Argumentos: $data, $calculator.
Resultado da cotação
wc_melhor_envio_rate_args
Modifica todos os rates antes de exibir no checkout.
Argumentos: $rate_args, $method, $package, $shipping_method.
add_filter( 'wc_melhor_envio_rate_args', function( $args, $method, $package, $sm ) {
// Acrescenta 10% de margem em tudo
$args['cost'] = $args['cost'] * 1.10;
return $args;
}, 10, 4 );
melhor_envio_<METHOD_ID>_rate
Filtro dinâmico por método. Substitua <METHOD_ID> pelo ID numérico do serviço (ex: melhor_envio_2_rate pra Sedex). Retorne false pra esconder o método.
add_filter( 'melhor_envio_2_rate', function( $args, $method, $package, $sm ) {
// Esconde Sedex pra pacotes acima de 30kg
if ( $package['contents_weight'] > 30 ) {
return false;
}
return $args;
}, 10, 4 );
wc_melhor_envio_method_fee
Sobrescreve a taxa de manuseio por método.
Argumentos: $fee, $method, $package.
wc_melhor_envio_method_cart_fee
Sobrescreve a taxa do carrinho por método.
Argumentos: $cart_fee, $method, $package.
Agências
wc_melhor_envio_jadlog_agency
Define dinamicamente a agência JadLog por cotação (no checkout).
Argumentos: $agency, $method_id, $instance_id, $package.
melhor_envio_agency
Define a agência por pedido (no momento da geração da etiqueta). Mais usado que o anterior — opera no fluxo de despacho, não na cotação.
Argumentos: $agency_id, $order, $company_id (2=JadLog, 6=Latam, 14=Loggi).
add_filter( 'melhor_envio_agency', function( $agency_id, $order, $company_id ) {
if ( $company_id === 2 && $order->get_shipping_state() === 'RJ' ) {
return '12345';
}
return $agency_id;
}, 10, 3 );
Geração de etiqueta
wc_melhor_envio_can_request_label
Controla quem pode gerar etiqueta.
Argumentos: $can_request, $order, $service_id.
add_filter( 'wc_melhor_envio_can_request_label', function( $can, $order, $service_id ) {
return $can && current_user_can( 'manage_shop_orders' );
}, 10, 3 );
wc_melhor_envio_can_delete_data
Controla quem pode excluir dados de etiqueta.
Argumentos: $can_delete.
melhor_envio_order_service
Sobrescreve qual serviço será usado pra um pedido específico.
Argumentos: $service_id, $order, $settings.
add_filter( 'melhor_envio_order_service', function( $service_id, $order, $settings ) {
// Força Sedex pra clientes VIP
if ( $order->get_meta( '_vip' ) === 'yes' ) {
return 2;
}
return $service_id;
}, 10, 3 );
melhor_envio_from_address
Customiza o endereço de remetente por pedido.
Argumentos: $address, $order.
melhor_envio_invalid_method_error
Customiza a mensagem de erro quando o serviço requisitado não está disponível.
Argumentos: $message, $methods, $service_id, $settings, $order.
wc_melhor_envio_print_ajax_response
Modifica o HTML da resposta AJAX de impressão (botões adicionais, mensagens, etc).
Argumentos: $html, $order, $response.
wc_melhor_envio_request_label_methods_class
Customiza a classe CSS aplicada à listagem de métodos no metabox.
wc_melhor_envio_order_available_methods
Modifica a lista de métodos disponíveis pra um pedido específico (no metabox e no painel de etiquetas).
Logística reversa e nota fiscal
wc_melhor_envio_enabled_reverse_logistic
Habilita o suporte a logística reversa. Padrão: false.
add_filter( 'wc_melhor_envio_enabled_reverse_logistic', '__return_true' );
Veja logística reversa.
wc_melhor_envio_order_invoice_id
Sobrescreve o número da nota fiscal a ser usado na etiqueta. Útil quando você guarda a NF em outro meta.
Argumentos: $invoice_id, $order.
add_filter( 'wc_melhor_envio_order_invoice_id', function( $id, $order ) {
return $id ?: $order->get_meta( '_minha_chave_nf' );
}, 10, 2 );
Configurações e parâmetros da API
melhor_envio_integration_fields
Modifica os campos do formulário de integração antes de renderizar.
Argumentos: $fields.
melhor_envio_additional_params
Adiciona parâmetros customizados a todas as requisições da API (ex: identificador de vendor pra co-marketing).
Argumentos: $params, $api_instance.
add_filter( 'melhor_envio_additional_params', function( $params, $api ) {
$params['vendor'] = 'minha_loja';
return $params;
}, 10, 2 );
Próximos passos
- Actions — eventos disparados em pontos do ciclo.
- Funções helper — utilitários globais.
- Meta keys — estrutura de dados gravada no pedido.