FernandoAcosta.Net

Filtros disponíveis

4 min de leituraAtualizado há 1 hora

O plugin não tem tela de configurações. Tudo o que muda o conteúdo ou o layout da declaração passa por filtros. Esta é a referência completa, agrupada pela parte do documento que cada filtro afeta.

Cole os exemplos no functions.php do tema filho ou num plugin de snippets (Code Snippets, FluentSnippets). Pra inserir conteúdo novo em pontos da declaração, veja Actions, templates e CSS.

Customizações avançadas não são cobertas pelo suporte

Bugs em código customizado precisam ser depurados pelo dev que escreveu. Teste num pedido de exemplo antes de usar na operação.

Colunas e total

Filtro Padrão O que controla
wc_correios_declaration_show_price_column true Coluna Preço
wc_correios_declaration_show_weight_column true Coluna Peso
wc_correios_declaration_show_total true Linha Valor total

Quando você esconde uma coluna, o plugin alarga a coluna Discriminação do Conteúdo sozinho.

add_filter( 'wc_correios_declaration_show_weight_column', '__return_false' );

Itens

wc_correios_declaration_items

Filtra a lista de itens que entra na tabela. Recebe o array de WC_Order_Item_Product e o pedido.

Exemplo: deixar produtos virtuais fora da declaração.

add_filter( 'wc_correios_declaration_items', function( $items, $order ) {
    foreach ( $items as $key => $item ) {
        $product = $item->get_product();

        if ( $product && $product->is_virtual() ) {
            unset( $items[ $key ] );
        }
    }

    return $items;
}, 10, 2 );

O Valor total vem do subtotal do pedido e não muda quando você tira itens por aqui. Ajuste também o wc_correios_declaration_total.

wc_correios_declaration_product_name

Nome exibido em Discriminação do Conteúdo. Padrão: o nome do item no pedido.

apply_filters( 'wc_correios_declaration_product_name', $name, $item, $order );

Exemplo: nome genérico pra todos os itens.

add_filter( 'wc_correios_declaration_product_name', function( $name, $item, $order ) {
    return 'Acessórios de moda';
}, 10, 3 );

wc_correios_declaration_product_name_attributes

Em variações, o plugin acrescenta ao nome os atributos globais (pa_*) que ainda não estão no nome do item, separados por /. O valor usado é o salvo no pedido, que costuma ser o slug do termo (azul-marinho). Retorne false pra não acrescentar nada.

add_filter( 'wc_correios_declaration_product_name_attributes', '__return_false' );

wc_correios_declaration_product_quantity

Quantidade exibida. Padrão: a quantidade do item no pedido.

apply_filters( 'wc_correios_declaration_product_quantity', $quantity, $item, $order );

wc_correios_declaration_product_weight

Texto da coluna Peso. Padrão: peso atual do produto × quantidade, seguido da unidade da loja, sem espaço (0.9kg). Produto sem peso mostra -.

apply_filters( 'wc_correios_declaration_product_weight', $weight_text, $item, $order );

Exemplo: vírgula como separador decimal e espaço antes da unidade.

add_filter( 'wc_correios_declaration_product_weight', function( $weight_text, $item, $order ) {
    $product = $item->get_product();

    if ( ! $product || ! $product->get_weight() ) {
        return $weight_text;
    }

    $total = (float) $product->get_weight() * $item->get_quantity();

    return wc_format_localized_decimal( $total ) . ' ' . get_option( 'woocommerce_weight_unit' );
}, 10, 3 );

wc_correios_declaration_total

HTML do Valor total. Padrão: wc_price( $order->get_subtotal() ), que é a soma dos itens antes dos cupons, sem frete. A coluna Preço usa o total de cada linha já com desconto, então os números divergem em pedidos com cupom.

Exemplo: total igual à soma da coluna Preço.

add_filter( 'wc_correios_declaration_total', function( $total, $order ) {
    $soma = 0;

    foreach ( $order->get_items() as $item ) {
        $soma += $order->get_line_total( $item );
    }

    return wc_price( $soma );
}, 10, 2 );

wc_coreios_declaration_itens_title

Título da tabela. Padrão: Identificação dos bens. Recebe também o pedido.

Nome com erro de digitação

O nome real do filtro é wc_coreios_declaration_itens_title, com "coreios" e "itens". Use exatamente assim.

Textos

wc_correios_declaration_text

Texto do bloco Declaração. O plugin chama este filtro duas vezes: a primeira com true, pra decidir se mostra o bloco, e a segunda com o texto padrão. Retorne uma string pra trocar o texto ou false pra esconder o bloco.

add_filter( 'wc_correios_declaration_text', function() {
    return 'Seu texto da declaração.';
} );

wc_correios_declaration_observations

HTML do bloco Observações. Mesmo comportamento do filtro anterior: string troca o conteúdo, false esconde.

add_filter( 'wc_correios_declaration_observations', '__return_false' );

wc_correios_declaration_city

Cidade que aparece antes da data, acima da assinatura. Padrão: a cidade do endereço da loja. A data é sempre a do dia da impressão.

Remetente e destinatário

wc_correios_declaration_store_name

Nome do remetente. Padrão: o Título do site (get_bloginfo( 'name' )).

wc_correios_declaration_sender_address

Array com o endereço do remetente, formatado depois pelo WooCommerce. Chaves: first_name, last_name, company, billing_cpf, address_1, address_2, city, state, postcode, country, number, neighborhood. Os valores padrão vêm do Endereço da loja em WooCommerce → Configurações → Geral.

add_filter( 'wc_correios_declaration_sender_address', function( $address ) {
    $address['address_1'] = 'Rua das Flores, 120';
    $address['city']      = 'Joinville';
    $address['state']     = 'SC';
    $address['postcode']  = '89201-000';

    return $address;
} );

wc_correios_declaration_store_address

Versão em HTML do remetente, com o pedido como segundo parâmetro. Basta existir um callback neste filtro e o plugin passa a usar o HTML no lugar do array do filtro anterior. Use quando o remetente depende do pedido, por exemplo em lojas com mais de um centro de distribuição.

add_filter( 'wc_correios_declaration_store_address', function( $html, $order ) {
    if ( 'RJ' === $order->get_shipping_state() ) {
        return '<strong>Minha Loja - CD Rio</strong><br />Rua Exemplo, 50<br />20000-000<br />Rio de Janeiro - RJ';
    }

    return $html;
}, 10, 2 );

wc_correios_declaration_to_address

HTML do bloco Destinatário. Padrão: endereço de entrega formatado, ou o de cobrança quando o pedido não tem entrega. Recebe o pedido como segundo parâmetro.

wc_correios_declaration_show_cpf

Mostra o CPF (_billing_cpf) no destinatário. Padrão: true.

add_filter( 'wc_correios_declaration_show_cpf', '__return_false' );

Impressão e acesso

wc_correios_declaration_auto_open_print_page

Abre a janela de impressão do navegador assim que a declaração carrega. Padrão: true. Desligue se a equipe costuma editar antes de imprimir.

add_filter( 'wc_correios_declaration_auto_open_print_page', '__return_false' );

wc_correios_declaration_permissions

Decide quem pode abrir a declaração. Recebe o resultado de current_user_can( 'edit_shop_orders' ) e, desde a 1.6.0, o array de IDs dos pedidos como inteiros.

Exemplo: só administradores imprimem.

add_filter( 'wc_correios_declaration_permissions', function( $allowed, $order_ids ) {
    return current_user_can( 'manage_options' );
}, 10, 2 );

Logo e etiqueta de endereço

Filtro Padrão O que faz
wc_correios_declaration_logo false Mostra um logo ao lado do título. Desligado desde a 1.3.3, pra seguir o modelo atual dos Correios.
wc_correios_declaration_logo_url logo dos Correios do plugin URL da imagem do logo. Dá pra usar o logo da loja.
wc_correios_declaration_print_labels false Imprime no rodapé de cada folha uma etiqueta com destinatário e remetente, pra recortar.
wc_correios_declaration_destination_display_order_id true Mostra #ID do pedido na etiqueta. É o ID interno, não o número de plugins de numeração sequencial.

Exemplo: etiqueta no rodapé, sem o ID do pedido.

add_filter( 'wc_correios_declaration_print_labels', '__return_true' );
add_filter( 'wc_correios_declaration_destination_display_order_id', '__return_false' );

Veja também

Foi útil?