Woocommerce动态结账表单字段

时间:2018-04-15 00:00:59

标签: php wordpress loops woocommerce checkout

我目前正在使用wordpress网站。我定制了我的woo commerce checkout页面,在我的function.php子主题中包含了一个带有此代码的附加表单字段。效果很好。

add_action('woocommerce_after_order_notes', 'my_custom_checkout_fields');

function my_custom_checkout_fields($checkout){

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

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

echo '</div>';

}

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

1 个答案:

答案 0 :(得分:1)

已更新 - 您可以轻松使用已挂钩功能中的2个循环:

  • 第一个遍历每个购物车项目
  • 每个单位的第二个与数量相关

例如,如果您有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>';

}

代码进入活动子主题(或活动主题)的function.php文件。经过测试和工作