Woocommerce 使电子商务签出字段成为可选字段

Woocommerce 使电子商务签出字段成为可选字段,woocommerce,field,optional,checkout,Woocommerce,Field,Optional,Checkout,我已经使用下面的代码按照这个方法使checkout字段成为可选的。但是,我发现当非登录用户提交订单时,填写地址字段的警报跳出 add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' ); function custom_override_default_address_fields($address_fields) { $address_fields['fir

我已经使用下面的代码按照这个方法使checkout字段成为可选的。但是,我发现当非登录用户提交订单时,填写地址字段的警报跳出

add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
function custom_override_default_address_fields($address_fields) {

    $address_fields['first_name']['required'] = false;
    $address_fields['last_name']['required'] = false;
    $address_fields['address_1']['required'] = false;
    $address_fields['address_1']['placeholder'] = '';
    $address_fields['address_2']['required'] = false;
    $address_fields['address_2']['placeholder'] = '';
    $address_fields['postcode']['required'] = false;
    $address_fields['city']['required'] = false;

return $address_fields;
}
顺便说一句,我还尝试将billing和shipping字段分别设置为可选字段,作为链接中的方法。

转到此线程,并将不需要的字段的true更改为false 例如:更改$address_字段['postcode']['required']=true;
至$address_字段['postcode']['required']=false

根据您希望将哪些签出字段设置为可选(或必需),您需要挂接两个过滤器。第一个过滤器是和,用于地址字段,第二个过滤器是和,用于
计费电话
计费电子邮件
字段

add_filter( 'woocommerce_default_address_fields', 'adjust_requirement_of_checkout_address_fields' );
function adjust_requirement_of_checkout_address_fields( $fields ) {
    $fields['first_name']['required']   = false;
    $fields['last_name']['required']    = false;
    $fields['company']['required']      = false;
    $fields['country']['required']      = false;
    $fields['address_1']['required']    = false;
    $fields['address_2']['required']    = false;
    $fields['city']['required']         = false;
    $fields['state']['required']        = false;
    $fields['postcode']['required']     = false;

    return $fields;
}

add_filter( 'woocommerce_billing_fields', 'adjust_requirement_of_checkout_contact_fields');
function adjust_requirement_of_checkout_contact_fields( $fields ) {
    $fields['billing_phone']['required']    = false;
    $fields['billing_email']['required']    = false;

    return $fields;
}

您的代码对于已登录或未登录的用户来说非常有效……我想是的。但是,对于未登录的用户,会出现填写地址字段的警报,对于登录的用户,会出现填写邮政编码的警报。