FernandoAcosta.Netdocs

Meta keys

3 min de leituraAtualizado há 5 dias

Estrutura de meta gravada nos pedidos e nos itens de pedido. Use leitura via $order->get_meta() e gravação via $order->update_meta_data() — não acesse a tabela de meta direto a não ser que seja absolutamente necessário.

Meta do pedido — etiqueta de ida

Chave Tipo Descrição
_melhor_envio_item_id int ID do item dentro do carrinho do Melhor Envio.
_melhor_envio_order_id string Protocolo do envio no Melhor Envio (visível no painel).
_melhor_envio_print_url string URL pra abrir/baixar a etiqueta.
_melhor_envio_label_generated bool 1 quando a etiqueta foi gerada com sucesso.
_melhor_envio_bought_shipping bool 1 quando o frete foi pago no Melhor Envio.
_melhor_envio_requested_by int ID do usuário WordPress que solicitou a etiqueta.
_melhor_envio_tracking_codes array Lista de códigos de rastreio do envio principal.

Meta do pedido — logística reversa

Estrutura paralela, ativada apenas quando wc_melhor_envio_enabled_reverse_logistic retorna true. Veja logística reversa.

Chave Tipo Descrição
_melhor_envio_item_id_reverse int ID do item reverso no carrinho.
_melhor_envio_order_id_reverse string Protocolo do envio reverso.
_melhor_envio_print_url_reverse string URL da etiqueta reversa.
_melhor_envio_label_generated_reverse bool 1 quando a etiqueta reversa foi gerada.
_melhor_envio_bought_shipping_reverse bool 1 quando o frete reverso foi pago.
_melhor_envio_tracking_codes_reverse array Códigos de rastreio do envio reverso.

Meta do pedido — configuração e nota fiscal

Chave Tipo Descrição
_order_invoice_id string Número da NF preenchido manualmente no metabox.
_order_invoice_access_key string Chave de acesso da NFe (44 dígitos), capturada do Bling ou Webmania.
_order_invoice_access_number string Número da NFe capturado do Webmania.
_me_invoice_number string Número da NF capturado do Bling.
_order_me_custom_service_id int ID do serviço sobrescrito no metabox (Sedex, PAC, etc).
_me_original_status string Status original do pedido antes do modo "apenas adicionar ao carrinho" — usado pra restaurar se necessário.
Por que existem chaves diferentes pra Bling e Webmania

A chave _order_invoice_access_key é unificada (vale como chave NFe pros dois). Já o número da NF veio em chaves diferentes por motivo histórico: o Bling usa _me_invoice_number desde a primeira integração; o Webmania usa _order_invoice_access_number. O filtro wc_melhor_envio_order_invoice_id permite apontar pra qualquer chave que sua loja preferir.

Meta do item de pedido (shipping)

Gravado no item de envio do pedido — não no pedido em si. Acesse via $order->get_items( 'shipping' ).

Chave Tipo Descrição
melhorenvio_method_id int ID do serviço escolhido pelo cliente no checkout. Pode ser preenchido manualmente num item de envio de outro método (taxa fixa, frete grátis) pra forçar geração de etiqueta.
melhorenvio_original_cost float Custo cotado originalmente pelo Melhor Envio (antes de qualquer markup local).
melhorenvio_delivery_time int Prazo estimado em dias retornado pela cotação.

Exemplos de leitura

$order = wc_get_order( 1234 );

// Estado da etiqueta
if ( $order->get_meta( '_melhor_envio_label_generated' ) === '1' ) {
    $protocol  = $order->get_meta( '_melhor_envio_order_id' );
    $print_url = $order->get_meta( '_melhor_envio_print_url' );
    echo "Protocolo {$protocol}, imprima em {$print_url}";
}

// Códigos de rastreio
$codes = $order->get_meta( '_melhor_envio_tracking_codes' );
if ( is_array( $codes ) ) {
    echo implode( ', ', $codes );
}

// Serviço escolhido (pelo item de envio)
foreach ( $order->get_items( 'shipping' ) as $shipping_item ) {
    $service_id = $shipping_item->get_meta( 'melhorenvio_method_id' );
    echo "Serviço: {$service_id}";
}

Forçar etiqueta em pedido com outro método de envio

Se o cliente escolheu um método não-Melhor-Envio (ex: frete grátis) mas você quer despachar via Melhor Envio mesmo assim, adicione o meta melhorenvio_method_id no item de envio do pedido com o ID do serviço (1 PAC, 2 Sedex, etc):

foreach ( $order->get_items( 'shipping' ) as $item ) {
    $item->update_meta_data( 'melhorenvio_method_id', 2 ); // Sedex
    $item->save();
}

A próxima geração de etiqueta no metabox vai usar esse serviço.

Próximos passos

  • Funções helper — funções pra ler rastreio sem mexer em meta direto.
  • Filtros — pontos pra customizar valores antes de gravar.
  • Actions — eventos disparados quando estes metas mudam.
Foi útil?