FernandoAcosta.Net

Actions, templates e CSS

3 min de leituraAtualizado há 1 hora

A declaração é montada por dois templates PHP e tem actions em vários pontos do documento. Com elas você acrescenta informação sem editar o plugin. Pra mudar textos e valores que já existem, use os Filtros disponíveis.

Cole os exemplos no functions.php do tema filho ou num plugin de snippets (Code Snippets, FluentSnippets).

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.

Actions disponíveis

Todas, menos a primeira, recebem o pedido (WC_Order) como parâmetro.

Action Onde roda
wc_correios_declaration_head Dentro do <head> da página de impressão. Sem parâmetros.
wc_correios_declaration_before_header Antes do título Declaração de Conteúdo.
wc_correios_declaration_after_header Depois do título, antes dos blocos de endereço.
wc_correios_declaration_after_store_address Dentro do bloco Remetente, depois do endereço.
wc_correios_declaration_after_customer_address Dentro do bloco Destinatário, depois do endereço.
wc_correios_declaration_before_items Na tabela de itens, depois do cabeçalho e antes do primeiro item.
wc_correios_declaration_after_items Na tabela de itens, depois do último item e antes do Valor total.

Numa impressão em massa, as actions com $order rodam uma vez por pedido.

Exemplos

Número do pedido abaixo do título

add_action( 'wc_correios_declaration_after_header', function( $order ) {
    printf( '<p style="text-align: center;">Pedido nº %s</p>', esc_html( $order->get_order_number() ) );
} );

Telefone do cliente no destinatário

add_action( 'wc_correios_declaration_after_customer_address', function( $order ) {
    $telefone = $order->get_shipping_phone() ? $order->get_shipping_phone() : $order->get_billing_phone();

    if ( $telefone ) {
        printf( '<p>Telefone: %s</p>', esc_html( $telefone ) );
    }
} );

Item fixo na tabela (brinde, manual, embalagem)

Use a mesma marcação das linhas do plugin. Assim o item fica editável na tela e ganha a caixa Ocultar.

add_action( 'wc_correios_declaration_after_items', function( $order ) {
    ?>
    <div class="line-item">
        <div class="product-name" contenteditable="true">Brinde: adesivo</div>
        <div class="product-quantity" contenteditable="true">1</div>
        <div class="product-weight" contenteditable="true">-</div>
        <div class="product-price" contenteditable="true">R$ 0,00</div>
        <div class="line-options"><input type="checkbox" class="hide-column" /></div>
    </div>
    <?php
} );

Se você escondeu a coluna de peso ou de preço com os filtros, tire a div correspondente do exemplo.

Sobrescrever os templates

O plugin carrega os templates pelo sistema do WooCommerce, então dá pra sobrescrever pelo tema:

Template O que monta
print-page.php A página de impressão: <head>, laço dos pedidos, botão Imprimir página e a abertura automática da janela de impressão.
order-content.php Uma declaração: remetente, destinatário, tabela de itens, texto, assinatura e observações.

Pra sobrescrever:

  1. Copie o arquivo de wp-content/plugins/wc-correios-declaration/templates/.
  2. Cole em wp-content/themes/seu-tema-filho/woocommerce/.
  3. Edite a cópia.

Variáveis disponíveis:

  • print-page.php: $orders (array de WC_Order), $show_weight_column, $show_price_column, $show_total.
  • order-content.php: $order, $show_weight_column, $show_price_column, $show_total.
Template copiado não recebe atualização

Quando o plugin mudar um template, a sua cópia continua com a versão antiga. Depois de cada atualização, compare os arquivos. Se o que você precisa cabe num filtro ou numa action, prefira esse caminho.

CSS da impressão

Pra ajustar poucos detalhes, acrescente regras pela action wc_correios_declaration_head:

add_action( 'wc_correios_declaration_head', function() {
    echo '<style>
        body { font-size: 15px; }
        .table .line-item .product-name { font-weight: bold; }
    </style>';
} );

Pra trocar a folha de estilos inteira, use o filtro wc_correios_declaration_css. Ele recebe a URL do style.css do plugin e deve retornar a URL do seu arquivo:

add_filter( 'wc_correios_declaration_css', function( $url ) {
    return get_stylesheet_directory_uri() . '/declaracao.css';
} );

Comece copiando o assets/css/style.css do plugin: o layout das colunas, as quebras de página e a ocultação de itens dependem dele.

Veja também

Foi útil?