2016-09-21 36 views
0

我需要爲我的結帳頁創建一個全新的部分,並從用戶那裏收集一些重要信息,然後將此信息添加到發送給我們的訂單的標準電子郵件中履行團隊。woocommerce_form_field()不會呈現我指定的字段

這裏是我試圖做的事:

首先,我創建結帳表單頁面內我自己的鉤子,像這樣:

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

然後在模板掛鉤頁面內結帳頁面我滴個功能到這個鉤子將呈現一個模板,我創建的頁面:

add_action('ni_card_form', 'render_card_form'); 

然後通過鉤子調用的函數。

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>'; 

} 

如果我用正常的HTML輸入字段替換wooCommerce函數,它們將在正確的位置呈現。但是,因爲它使用這些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'';

現在,它的工作。