2016-09-21 3 views
0

내 체크 아웃 페이지에 새로운 섹션을 만들고 사용자로부터 중요한 정보를 수집 한 다음이 정보를 표준 주문에 보내야합니다 성취 팀. 의 템플릿 후크 페이지 내에서 다음woocommerce_form_field()가 지정한 위치를 렌더링하지 않습니다.

<div class="col2-set group"> 
    <div class="col col-1"> 
    <?php do_action('ni_card_form') ?> 
    </div> 
</div> 

:

첫째, 내가 지금처럼 체크 아웃 양식 페이지 내에서 내 자신의 후크를 만들 : 여기

내가 할 시도하고있는 무슨이다 계산 페이지 페이지에 생성 된 템플릿을 렌더링하는이 훅에 함수를 놓습니다.

그러면 함수가 후크에 의해 호출됩니다.

function render_card_form() { 
    echo ' 
    <div class="group postpaid-card"> 
    <h3>PostPaid Recurring Billing</h3> 
    <div class="my-input-field"> 
     <small class="card-type"></small> 
     ' . 
     woocommerce_form_field('c_card', array(
      'type' => 'text', 
      'class' => array('c_card', 'input-text'), 
      'label' => __('Card Number:'), 
      'placeholder' => "XA-12-3456-7817", 
      'required' => true 
     )) 
     . ' 
     <p class="c-error"></p> 
    </div> 
    <div class="my-input-field"> 
     <div class="col2-set group"> 
     <div class="col c-half c-first"> 
      ' . 
      woocommerce_form_field('c_date', array(
       'type' => 'text', 
       'class' => array('c_date', 'input-text'), 
       'label' => __('Exp. Date:'), 
       'placeholder' => "MM/YY", 
       'required' => true 
      )) 
      . ' 
     </div> 
    </div> 
    </div>'; 

} 

wooCommerce 기능을 일반 HTML 입력 필드로 바꾸면 올바른 위치에 렌더링됩니다. 그러나 이러한 필드를 만들기 위해 wooCommerce 함수를 사용하기 때문에 작동하지 않습니다. 대신 해당 필드를 페이지의 다른 섹션에 추가합니다.

왜 이런 일이 발생합니까?

one과 같은 자습서를보고 나면 그 입력을 HTML 내에서 렌더링 할 수있는 것처럼 보입니다. 물론, 그는 (노트 다음에) 어딘가에 템플릿을 배치하기 위해 후크를 사용하지만 템플릿을 전체적으로 렌더링하고 입력을 다른 곳에 렌더링하지 않습니다.

왜 이런 일이 일어날 수 있습니까?

답변

0

답변은 템플릿 기능에 있습니다. 문자열에 함수를 추가 할 수 없습니다. 각 에코를 끝내고 woocommercie 필드 함수를 호출 한 다음 템플릿을 제대로 빌드하기 위해 새 에코를 시작해야합니다. 예를 들어

:

echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>'; 

woocommerce_form_field('my_field_name', array(
    'type'   => 'text', 
    'class'   => array('my-field-class form-row-wide'), 
    'label'   => __('Fill in this field'), 
    'placeholder' => __('Enter something'), 
    ), $checkout->get_value('my_field_name')); 

echo '</div>'; 

구조는 여기에 그대로이다

에코 ';

woocomm function;

echo '';

이제 작동합니다.