【问题标题】:conditional woocommerce checkout validation depending on product tag in cart有条件的 woocommerce 结帐验证,具体取决于购物车中的产品标签
【发布时间】:2021-09-28 15:36:04
【问题描述】:

对于带有特殊产品标签的产品,我想在 woocommerce 结帐时设置另一个地址字段验证。 所以我的产品标签 id 是 199,当带有这个标签的产品在购物车中时,验证应该是不同的。我让它工作,但我的代码也会影响我想像往常一样进行验证的“正常”结帐。它会产生一些额外的字段。

也许有人知道我做错了什么:

    add_filter( 'woocommerce_default_address_fields', 'schwinn_validation', 10, 1 );
    function schwinn_validation( $address_fields ) {
    $schwinn_cart=WC()->cart->get_cart();


    foreach( $schwinn_cart as $cart_item ){

        $product_array = $cart_item['data'];

        //echo $product_array->tag_ids[0];
        $product_tags_incart=$product_array->tag_ids[0];

        // wenn das Produkt mit tag id 199 getagt ist, wird eine andere validation durchgeführt

        if($product_tags_incart == 199 ){

        $address_fields['billing_phone']['required'] = false;
        $address_fields['billing_first_name']['required'] = false;
        $address_fields['billing_last_name']['required'] = false;
        $address_fields['billing_address_1']['required'] = false;
        $address_fields['billing_address_2']['required'] = false;
        $address_fields['billing_city']['required'] = false;
        $address_fields['billing_postcode']['required'] = false;
        $address_fields['billing_country']['required'] = false;
        $address_fields['billing_country']['required'] = false;
        $address_fields['billing_email']['required'] = false;

        return $address_fields;
    
        };
    }
    }

【问题讨论】:

标签: validation woocommerce checkout


【解决方案1】:

好的,我发现了问题所在,当没有标签 id 199 的产品时,我也必须返回字段,谢谢你帮我考虑问题:-)

    add_filter( 'woocommerce_default_address_fields', 'schwinn_validation' , 10, 1);
    function schwinn_validation( $address_fields ) {
$schwinn_cart=WC()->cart->get_cart();


    foreach( $schwinn_cart as $cart_item ){

        $product_array = $cart_item['data'];

        //echo $product_array->tag_ids[0];
        $product_tags_incart=$product_array->tag_ids[0];

        // wenn das Produkt mit tag id 199 getagt ist, werden die Rechnungsadressenfelder ausgeblendet, weil das Produkt dann eine Kundenrechnung ist
            if($product_tags_incart == 199 ){

        $address_fields['billing_phone']['required'] = false;
        $address_fields['billing_first_name']['required'] = false;
        $address_fields['billing_last_name']['required'] = false;
        $address_fields['billing_address_1']['required'] = false;
        $address_fields['billing_address_2']['required'] = false;
        $address_fields['billing_city']['required'] = false;
        $address_fields['billing_postcode']['required'] = false;
        $address_fields['billing_country']['required'] = false;
        $address_fields['billing_country']['required'] = false;
        $address_fields['billing_email']['required'] = false;

        return $address_fields;
    
        }else{
                return $address_fields;
            };

    }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 2018-06-17
    • 1970-01-01
    • 2014-05-13
    • 2017-04-27
    • 2020-02-14
    • 1970-01-01
    • 2017-04-28
    相关资源
    最近更新 更多