• Resolvido Rafael Botelho

    (@rhenrigb)


    Alterei o campo de “Notas do cliente” no checkout para que eu pudesse inserir opções para o cliente escolher, está funcionando normalmente. MAS quando tentei usar o mesmo código como base para alterar o “billing_company” para que ele pegue uma URL gerada e registre no campo, o valor sempre retorna zero.

    Eu preciso fazer com que a URL do boleto que foi gerada no checkout vá para o billing_company.

    Segue o código do billing_company que retorna zero (não funcionando):

    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;
    }
Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Moderador Felipe Elia

    (@felipeelia)

    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)?

    Criador do tópico Rafael Botelho

    (@rhenrigb)

    @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.
    Moderador Felipe Elia

    (@felipeelia)

    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?

    Criador do tópico Rafael Botelho

    (@rhenrigb)

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

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘Registrar URL no billing_company’ está fechado para novas respostas.