FernandoAcosta.Netdocs

Filtros disponíveis

2 min de leituraAtualizado há 5 dias

Os filtros do Correios Updater permitem alterar quase todos os comportamentos do plugin sem editar o código fonte. Esta é a referência completa.

Pra hooks de ação (reagir a eventos), veja Actions disponíveis.

Seleção de pedidos pra verificar

wc_correios_status_updater_get_orders_args

Modifica os argumentos que o plugin passa pro wc_get_orders ao buscar pedidos pra verificar.

apply_filters( 'wc_correios_status_updater_get_orders_args', $args );

Args padrão:

[
    'limit'  => -1,
    'status' => $settings['status_to_check'],
    'return' => 'ids',
]

Exemplo: verificar apenas pedidos pagos com PIX.

add_filter( 'wc_correios_status_updater_get_orders_args', function( $args ) {
    $args['meta_query'] = [
        [
            'key'   => '_payment_method',
            'value' => 'pix',
        ],
    ];
    return $args;
});

wc_correios_status_updater_tracking_code

Modifica o array de códigos de rastreio extraídos pra um pedido. É o jeito de incluir códigos vindos de fontes não suportadas nativamente.

apply_filters( 'wc_correios_status_updater_tracking_code',
    $tracking_codes,  // array
    $order,           // WC_Order
    $settings         // array
);

Exemplo: incluir códigos de um campo custom.

add_filter( 'wc_correios_status_updater_tracking_code', function( $codes, $order ) {
    $extra = $order->get_meta( '_meu_codigo_correios' );
    if ( $extra ) {
        $codes[] = $extra;
    }
    return $codes;
}, 10, 2 );

wc_correios_status_updater_run_event

Permite pular o processamento pra um pedido específico, mesmo que ele esteja na fila.

apply_filters( 'wc_correios_status_updater_run_event',
    true,           // padrão: processar
    $event, $tracking_code, $order
);

Exemplo: pular pedidos marcados como teste.

add_filter( 'wc_correios_status_updater_run_event', function( $run, $event, $code, $order ) {
    return $order->get_meta( '_skip_correios' ) ? false : $run;
}, 10, 4 );

Cron e fila

correios_updater_cron_interval

Intervalo (em minutos) entre rodadas automáticas. Padrão: 180 (3 horas).

add_filter( 'correios_updater_cron_interval', function() {
    return 60; // verifica a cada hora
});
Não exagera

A maioria dos eventos dos Correios não atualiza mais que 1-2 vezes por dia. Intervalos muito curtos (ex: 5 minutos) só geram carga sem benefício.

Classificação de eventos

Cada categoria de evento tem um filtro próprio pra mudar a lógica de detecção. Útil pra integrar transportadoras alternativas que retornam descrições diferentes, ou pra refinar comportamentos específicos.

wc_correios_status_updater_is_delivered

Define o que conta como "entregue".

add_filter( 'wc_correios_status_updater_is_delivered', function( $is_delivered, $event ) {
    if ( strpos( $event['descricao'], 'Texto custom de entrega' ) !== false ) {
        return true;
    }
    return $is_delivered;
}, 10, 2 );

wc_correios_status_updater_is_failed

Define o que conta como falha de entrega.

wc_correios_status_updater_is_waiting_pickup

Define o que conta como aguardando retirada.

wc_correios_status_updater_is_not_delivered

Define o que conta como pedido não entregue.

wc_correios_status_updater_is_delivery_route

Define o que conta como saiu pra entrega.

Todos têm a mesma assinatura: recebem $is_X (boolean atual) e $event (array). Retornam boolean.

E-mails

wc_correios_status_updater_trigger_email

Permite suprimir o envio do e-mail do cliente em casos específicos.

apply_filters( 'wc_correios_status_updater_trigger_email',
    true,                  // padrão: enviar
    $events, $tracking_code, $order
);

Exemplo: não notificar pedidos B2B.

add_filter( 'wc_correios_status_updater_trigger_email', function( $send, $events, $code, $order ) {
    return $order->get_meta( '_is_b2b' ) ? false : $send;
}, 10, 4 );

wc_correios_status_updater_notification_allowed_for_order

Controla a janela de tempo em que pedidos recebem notificação. Por padrão: pedidos com mais de 40 dias não recebem mais e-mail.

apply_filters( 'wc_correios_status_updater_notification_allowed_for_order',
    ( time() - ( DAY_IN_SECONDS * 40 ) < $order->get_date_created()->getTimestamp() )
);

Exemplo: notificar todos, sem limite de idade.

add_filter( 'wc_correios_status_updater_notification_allowed_for_order', '__return_true' );

wc_correios_status_updater_tracking_update_message

Modifica a mensagem do e-mail do cliente depois dos placeholders serem processados.

apply_filters( 'wc_correios_status_updater_tracking_update_message',
    $formatted_message,
    $order_object
);

wc_correios_status_updater_tracking_update_failed

Modifica a mensagem do e-mail de falha pro admin.

Anotações no pedido

wc_correios_status_updater_add_order_note

Liga ou desliga as notas internas que o plugin adiciona em cada atualização. Útil em lojas com volume muito alto onde notas excessivas poluem o histórico.

apply_filters( 'wc_correios_status_updater_add_order_note', true );

Exemplo: desligar notas de notificação.

add_filter( 'wc_correios_status_updater_add_order_note', '__return_false' );

Configurações globais

wc_correios_status_updater_settings

Modifica o array completo de configurações do plugin antes de ser usado em runtime. Útil pra forçar valores em ambientes específicos (staging vs produção).

apply_filters( 'wc_correios_status_updater_settings', $settings );

Exemplo: forçar log ligado em staging.

add_filter( 'wc_correios_status_updater_settings', function( $settings ) {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        $settings['enable_log'] = 'yes';
    }
    return $settings;
});

wc_correios_status_updater_status_to_check

Modifica especificamente o array de status verificados.

wc_correios_status_updater_status_after_delivery

Modifica especificamente o status final pós-entrega.

Veja também

Foi útil?