FernandoAcosta.Net

Salvar dados da tabela no pedido

1 min de leituraAtualizado há 2 semanas1.7.0

O filtro wc_table_shipping_rate recebe a linha da tabela que gerou a cotação. O que você puser em meta_data é gravado no item de frete do pedido.

Exemplo

A tabela tem uma 9ª coluna com o código interno da transportadora. As colunas do CSV chegam por posição, começando em 0.

add_filter( 'wc_table_shipping_rate', function ( $args, $rate ) {
    $row = $rate['row'];
    if ( isset( $row[8] ) && '' !== $row[8] ) {
        $args['meta_data']['Código da transportadora'] = $row[8];
    }
    return $args;
}, 10, 2 );

Pra usar a posição de uma coluna mapeada, leia $rate['map']. Ex.: $row[ $rate['map']['label'] ] é o nome da linha.

Esconder do cliente

Chave começando com _ não aparece pro cliente nem nos e-mails:

$args['meta_data']['_codigo_transportadora'] = $row[8];

Ler depois

foreach ( $order->get_items( 'shipping' ) as $item ) {
    $codigo = $item->get_meta( 'Código da transportadora' );
}

Modo banco de dados

No modo banco de dados, $rate['row'] é o registro do banco, com chaves nomeadas (postcode_start, weight_end, cost, label...). Colunas extras do CSV não são importadas.

Artigos relacionados

Foi útil?