FernandoAcosta.Netdocs

Filtros

2 min de leituraAtualizado há 5 dias

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

Foi útil?