Oi @rhenrigb, tudo bem?
Woocommerce não é minha especialidade, mas vou tentar ajudar. A função altera_note2
só recebe o parâmetro $field
, neste escopo não tem a variável $order
definida. De qualquer forma, se você ainda está no checkout, como já tem o número do pedido ($order->id
)?
@felipeelia obrigado pela resposta, consegui entender o processo em relação ao order. E realmente, não possuo o $order->id ainda quando busco preencher o campo billing_company.
Mas como eu deveria utilizar o código para levar a URL?
Abaixo eu tenho esse código que apresento a URL do boleto na tela (por questões de teste):
add_action( 'woocommerce_order_details_after_order_table', 'show_moip_url_woo', 10, 1 );
function show_moip_url_woo($order){
$moipurl = get_post_meta( $order->id, 'woocommerce_moip_url', true );
echo '<p><strong>'.__('Link de Pagamento Moip').': '. '</strong></p>';
echo '<p>' . $moipurl. '</p>';
}
E aqui não sei exatamente o que deveria alterar para que a URL preencha meu billing_company. Não sei se altero o $field
pra $order
ou o que posso colocar no lugar do $order->id
, você pode me esclarecer como fazer isso?
add_filter('woocommerce_checkout_fields','altera_note2');
function altera_note2($field){
$field['billing']['billing_company']['label'] = 'URL Moip';
$field['billing']['billing_company']['type'] = 'select';
$field['billing']['billing_company']['options'] = array(get_post_meta( $order->id, 'woocommerce_moip_url', true )=>'testeurl'
);
return $field;
}
-
Esta resposta foi modificada 7 anos, 2 meses atrás por Rafael Botelho.
Oi @rhenrigb,
Então, o que eu não consegui entender da sua pergunta foi o seguinte: na hora de mostrar os campos para o checkout ainda não existe pedido, o usuário está fazendo o checkout para só depois ter o $order, não é assim? Por isso que não entendi como ter o $order->id antes do usuário terminar o checkout.
Você pode alterar o pedido logo depois de sua criação com o hook woocommerce_new_order, chegou a dar uma olhada nele?
Olá @felipeelia.
Então, eu consigo retornar a URL que preciso, como está no primeiro código da minha segunda resposta.
Eu precisaria que esta mesma URL preenchesse o billing_company
, mas como você tem toda razão, no processo, o billing_company
já foi utilizado anteriormente no checkout (apesar de que eu não utilizo este campo).
O que estou entendendo, com o retorno ‘0’ para o billing_company
, é que o get_post_meta
ainda não tem o $order
e por isso retorna 0. Já tentei utilizar o update_post_meta
, mas não consigo nada mais que zero. :/