我尝试使用woocommerce_checkout_fields
过滤器钩子同时禁用多个结帐字段的“required”属性,但没有成功。
插件也无法正常工作。这是我的代码:
// Hook in
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_address_1']['required'] = false;
$fields['billing']['billing_address_2']['required'] = false;
$fields['billing']['billing_postcode']['required'] = false;
$fields['billing']['billing_city']['required'] = false;
$fields['billing']['billing_phone']['required'] = false;
return $fields;
}
有什么问题?
我怎样才能做到这一点?
答案 0 :(得分:9)
您需要使用unset()
功能来实现此目的,您可以这样做:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_phone']);
return $fields;
}
您需要将此代码粘贴到活动子主题或主题中的function.php文件中。
您已使用更新 更改了您的问题:这是我的新答案
使地址字段可选(关于您的更新):
为此,您必须使用不同的过滤器钩子。有两种不同的过滤钩:
1)对于结算字段:
add_filter( 'woocommerce_billing_fields', 'wc_optional_billing_fields', 10, 1 );
function wc_optional_billing_fields( $address_fields ) {
$address_fields['billing_address_1']['required'] = false;
$address_fields['billing_address_2']['required'] = false;
$address_fields['billing_postcode']['required'] = false;
$address_fields['billing_city']['required'] = false;
$address_fields['billing_phone']['required'] = false;
return $address_fields;
}
2)对于发货地区:
add_filter( 'woocommerce_shipping_fields', 'wc_optional_shipping_fields', 10, 1 );
function wc_optional_shipping_fields( $address_fields ) {
$address_fields['shipping_phone']['required'] = false;
return $address_fields;
}
要设置所需的地址字段:
您可以使用上面相同的挂钩和功能,将每个字段false
更改为true
。
您需要将此代码粘贴到活动子主题或主题中的function.php文件中。