Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建动态签出表单字段_Php_Wordpress_Loops_Woocommerce_Checkout - Fatal编程技术网

Php 创建动态签出表单字段

Php 创建动态签出表单字段,php,wordpress,loops,woocommerce,checkout,Php,Wordpress,Loops,Woocommerce,Checkout,我目前正在wordpress网站上工作。我定制了我的woo commerce结帐页面,以便在我的function.php子主题中包含一个附加的表单字段。它工作得很好 add_action('woocommerce_在订单注释之后,'my_custom_checkout_字段'); 函数my_自定义_签出_字段($checkout){ 回显“.”(“新字段”); woocommerce\u表单\u字段('我的\u字段\u名称',数组( '类型'=>'文本', 'class'=>array('my-

我目前正在wordpress网站上工作。我定制了我的woo commerce结帐页面,以便在我的function.php子主题中包含一个附加的表单字段。它工作得很好

add_action('woocommerce_在订单注释之后,'my_custom_checkout_字段');
函数my_自定义_签出_字段($checkout){
回显“.”(“新字段”);
woocommerce\u表单\u字段('我的\u字段\u名称',数组(
'类型'=>'文本',
'class'=>array('my-field-class表单行宽'),
“label'=>”(填写此字段),
“占位符”=>“‘输入某物’”,
),$checkout->get_value('my_field_name');
回声';
}

我希望根据订购的产品数量重复此表单字段。假设我订购了一个产品3次,我希望表单字段在结帐时出现3次。帮助任何人?

已更新-这可以通过挂钩函数中的两个循环轻松实现:

  • 第一个循环遍历每个购物车项目
  • 与数量相关的每个单位的第二个
因此,例如,如果您有2个购物车项目:第一个项目数量为3,第二个项目数量为2,您将获得5个自定义签出文本字段

add_action('woocommerce_after_order_notes', 'my_custom_checkout_fields', 20, 1 );
function my_custom_checkout_fields( $checkout ){
     $index = 0;

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

    // First Loop go through cart items
    foreach( WC()->cart->get_cart() as $cart_item ) {
        // 2nd Loop go through each unit related to item quantity
        for( $i = 1; $i <= $cart_item['quantity']; $i++ ) {
            $index++;

            woocommerce_form_field('my_field_name_'.$index, array(
                'type' =>'text',
                'class'=>array('my-field-class form-row-wide'),
                'label'=>__('Fill this field') . ' ' . $index,
                'placeholder'=>__('Enter Something'),
            ), $checkout->get_value('my_field_name_'.$index));

        }
    }

    echo '</div>';

}
add_action('woocommerce_在订单注释之后,'my_custom_checkout_字段',20,1);
函数my_自定义_签出_字段($checkout){
$index=0;
回显“.”(“新字段”);
//第一个循环遍历购物车项目
foreach(WC()->cart->get_cart()作为$cart_项目){
//第二个循环遍历与项目数量相关的每个单元
对于($i=1;$i“文本”,
'class'=>array('my-field-class表单行宽'),
“label'=>\(“填充此字段”)。$index,
“占位符”=>“‘输入某物’”,
),$checkout->get_value('my_field_name.$index));
}
}
回声';
}

代码进入活动子主题(或活动主题)的function.php文件。经过测试,工作正常。我得到了要求的结果