有没有办法从php结帐页面上的结算字段中删除所需的星号?我有以下代码无效。
add_filter( 'woocommerce_checkout_fields' , 'customize_fields' );
function customize_fields( $fields ) {
$fields['billing']['billing_address_2']['required'] = false;
return $fields;
}
答案 0 :(得分:2)
管理结帐字段有两个过滤器。您可以使用woocommerce_checkout_fields
过滤器使字段“不需要”,但不会删除红色星号。
使用woocommerce_checkout_fields
过滤器处理默认地址字段时,您的某些更改不会生效,因为woocommerce_default_address_fields
过滤器及其默认值可能会覆盖您的更改。
仅部分功能代码:
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_address_1']['required'] = false ;
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
不再需要地址字段(#1),但仍有红色星号。
功能齐全的代码:
function custom_override_default_address_fields( $address_fields ) {
$address_fields['address_1'][ 'required' ] = false;
return $address_fields;
}
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
现在不需要此字段,红色星号消失。
Documentation says“在某些特定情况下,您需要使用woocommerce_default_address_fields过滤器。此过滤器适用于所有结算和发货默认字段。”
答案 1 :(得分:1)
使用CSS可能会更容易,对于屏幕阅读器来说更清洁,更好:
.woocommerce-checkout abbr.required {
display: none;
}
.woocommerce-checkout
是一个仅附加到结帐页面的正文类,因此它不会影响.required
元素中可能包含abbr
类的任何其他woo页面。
使用函数不需要字段:
// Hook in
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
// Our hooked in function - $address_fields is passed via the filter!
function custom_override_default_address_fields( $address_fields ) {
$address_fields['address_2']['required'] = false;
return $address_fields;
}
答案 2 :(得分:0)
您必须将以下代码添加到functions.php文件中。以下示例适用于邮政编码:
/* Seteaza campul Cod postal ne-obligatoriu */
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_postcode', 10, 1 );
function wc_npr_filter_postcode( $address_fields ) {
$address_fields['billing_postcode']['required'] = false;
return $address_fields;
}
/* End - Seteaza campul Cod postal ne-obligatoriu */