【问题标题】:Woocommerce Dynamic Checkout Form fieldsWoocommerce 动态结帐表单字段
【发布时间】:2018-04-15 00:00:59
【问题描述】:

我目前正在开发一个 wordpress 网站。我自定义了我的 woo 商务结帐页面,以在我的 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 次。帮助任何人?

【问题讨论】:

    标签: php wordpress loops woocommerce checkout


    【解决方案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 文件中。测试和工作

    【讨论】:

    • 工作。我得到了所需的结果
    猜你喜欢
    • 2013-07-07
    • 2015-04-20
    • 1970-01-01
    • 2023-03-05
    • 2018-06-30
    • 1970-01-01
    • 2020-08-02
    • 2018-01-08
    • 1970-01-01
    相关资源
    最近更新 更多