woocommerce_form_field()不会呈现我指定的字段

woocommerce_form_field()不会呈现我指定的字段

问题描述:

我需要为我的结帐页创建一个全新的部分,并从用户那里收集一些重要信息,然后将此信息添加到发送给我们的订单的标准电子邮件中履行团队。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中的输入内显示这些输入。当然,他正在使用钩子将模板放置在某处(注释之后),但它仍将整个模板渲染出来,而不是将输入渲染到别处。

为什么会发生这种情况?

答案在模板函数中。我无法将这些函数添加到字符串中。我必须结束每个回声,调用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'';

现在,它的工作。