Woocommerce从结帐页面上的必填字段中删除星号

时间:2014-12-10 20:19:24

标签: php wordpress woocommerce checkout

有没有办法从php结帐页面上的结算字段中删除所需的星号?我有以下代码无效。

add_filter( 'woocommerce_checkout_fields' , 'customize_fields' );

function customize_fields( $fields ) {
    $fields['billing']['billing_address_2']['required'] = false;

    return $fields;
}

3 个答案:

答案 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  */