【发布时间】: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;
};
}
}
【问题讨论】:
-
能否展示一些正常结账和特殊结账的截图?
-
这是“正常”地址字段的样子 neonschwarz-my.sharepoint.com/:i:/g/personal/…
-
这是地址字段在代码中的样子,它只会产生更多字段neonschwarz-my.sharepoint.com/:i:/g/personal/…
-
尝试使用 if( isset($address_fields['billing_email'] ) { unset($address_fields['billing_email']); } 而不是 $address_fields['billing_email']['required'] =假的;
标签: validation woocommerce checkout