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. |
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.