2016-10-24 7 views
0

안녕하세요 저는 woocommerce에서 customin 체크 아웃 필드에 대한 질문이 있습니다. 결제 양식에 맞춤 입력란을 만들었으며 모든 것이 완벽하게 작동했습니다. 필드에 고객 카드 번호가 있습니다. 또한 wp-usermeta에 필드 값 (처음 입력 한 경우)을 저장하므로 주문과 만 일치하지는 않지만 고객 세부 정보와 함께 저장됩니다.woocommerce에서 사용자 정의 체크 아웃 필드 관리

이제 다음을 수행하고 싶습니다. 일단 상점에 돌아온 등록 고객이 체크 아웃 양식으로 이동하면 고객에게 매번 카드 번호를 입력하도록 요청하는 대신 새 필드 (empyt가 아닌 경우)가 자동으로 표시됩니다.

/** 
* Add the field to the checkout 
*/ 
add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

    function checkout_w55_card_number($checkout) { 

     echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 

     woocommerce_form_field('w55_card_number', array(
      'type'   => 'text', 
      'class'   => array('w55-card-number-class form-row-wide'), 
      'label'   => __('Inserisci n. tessera W55'), 
      'placeholder' => __('Inserisci numero'), 
     ), $checkout->get_value('w55_card_number')); 
     echo '</div>'; 
} 

내가 따라서이 방법으로 그것을 다시 정리하려하지만, 아무튼 :

내가 체크 아웃 페이지에서 사용자 정의 필드를 보여주는 내 아이 테마 fucntions.php에 추가 된 원래의 기능이었다 작동하지 않음

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

function checkout_w55_card_number($checkout) { 
//extracts the value of the w55_card_number field 
$w55_card = get_user_meta($user_id, 'w55_card_number', true); 
//condition is the w55_card_number field is empty or not 
if (!empty($w55_card)) : echo $w55_card;  else : 

      echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 

      woocommerce_form_field('w55_card_number', array(
       'type'   => 'text', 
       'class'   => array('w55-card-number-class form-row-wide'), 
       'label'   => __('Inserisci n. tessera W55'), 
       'placeholder' => __('Inserisci numero'), 
      ), $checkout->get_value('w55_card_number')); 
      echo '</div>'; 
     endif; 
    } 

의견이 있으십니까?

답변

1

user_id 변수가 정의되지 않았습니다. 당신은 다음을 수행해야합니다

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number'); 

function checkout_w55_card_number($checkout) { 
    $user_id = get_current_user_id(); 
    $w55_card = ''; 
    if ($user_id) { 
     //extracts the value of the w55_card_number field 
     $w55_card = get_user_meta($user_id, 'w55_card_number', true); 
    } 
    //condition is the w55_card_number field is empty or not 
    if (!empty($w55_card)) : echo $w55_card;  
    else : 
     echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>'; 
     woocommerce_form_field('w55_card_number', array(
      'type'   => 'text', 
      'class'   => array('w55-card-number-class form-row-wide'), 
      'label'   => __('Inserisci n. tessera W55'), 
      'placeholder' => __('Inserisci numero'), 
     ), $checkout->get_value('w55_card_number')); 
     echo '</div>'; 
    endif; 

}

+0

오 위대한! @ mirzap 감사합니다! –

+0

당신은 환영합니다 – MirzaP

관련 문제