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).
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:
- Copie o arquivo de
wp-content/plugins/wc-correios-declaration/templates/. - Cole em
wp-content/themes/seu-tema-filho/woocommerce/. - Edite a cópia.
Variáveis disponíveis:
print-page.php:$orders(array deWC_Order),$show_weight_column,$show_price_column,$show_total.order-content.php:$order,$show_weight_column,$show_price_column,$show_total.
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
- Filtros disponíveis — pra mudar colunas, textos, remetente, destinatário e permissões.