制作 WooCommerce 中不需要的结帐地址字段
Make checkout addresses fields not required in WooCommerce
在 Woocommerce 中,我正在尝试使用下面的代码创建不需要的结帐地址字段……但是在提交结帐表单时我有 this error "Please enter an address to continue"。
不需要我的代码来设置地址结帐字段:
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1
);
function wc_npr_filter_phone( $address_fields ) {
$address_fields['billing_phone']['required'] = true;
$address_fields['billing_country']['required'] = false;
$address_fields['billing_last_name']['required'] = false;
$address_fields['billing_city']['required'] = false;
$address_fields['billing_postcode']['required'] = false;
$address_fields['billing_email']['required'] = false;
$address_fields['billing_state']['required'] = false;
$address_fields['billing_address_1']['required'] = false;
$address_fields['billing_address_2']['required'] = false;
return $address_fields;
}
//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields',
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
$address_fields['shipping_first_name']['required'] = false;
$address_fields['shipping_last_name']['required'] = false;
$address_fields['shipping_address_1']['required'] = false;
$address_fields['shipping_address_2']['required'] = false;
$address_fields['shipping_city']['required'] = false;
$address_fields['shipping_country']['required'] = false;
$address_fields['shipping_postcode']['required'] = false;
$address_fields['shipping_state']['required'] = false;
return $address_fields;
}
HTML好像也还行:
如何在 WooCommerce 中创建不需要的结帐地址字段?
您应该需要使用 woocommerce_default_address_fields
过滤器钩子来代替 here。
替换代码:
// Billing and shipping addresses fields
add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
function filter_default_address_fields( $address_fields ) {
// Only on checkout page
if( ! is_checkout() ) return $address_fields;
// All field keys in this array
$key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');
// Loop through each address fields (billing and shipping)
foreach( $key_fields as $key_field )
$address_fields[$key_field]['required'] = false;
return $address_fields;
}
因为帐单电子邮件和 phone 已经默认为必需,如果您不希望它们 不需要,您应该需要这个额外的代码:
// For billing email and phone - Make them not required
add_filter( 'woocommerce_billing_fields', 'filter_billing_fields', 20, 1 );
function filter_billing_fields( $billing_fields ) {
// Only on checkout page
if( ! is_checkout() ) return $billing_fields;
$billing_fields['billing_phone']['required'] = false;
$billing_fields['billing_email']['required'] = false;
return $billing_fields;
}
所有代码都在您的活动子主题(或活动主题)的 function.php 文件中。已测试并有效。
唯一帮助我的是为国家添加一个字段并使其不可见(因为我不需要它)
add_filter( 'woocommerce_checkout_fields', 'your_require_wc_phone_field');
function your_require_wc_phone_field( $fields ) {
$fields['billing']['billing_phone']['required'] = false;
return $fields;
}
此方法使用 'woocommerce_checkout_fields',在我自己的网站上进行测试时,这是我可以将 billing_phone 字段更改为我的问题所必需的唯一方法。
在 Woocommerce 中,我正在尝试使用下面的代码创建不需要的结帐地址字段……但是在提交结帐表单时我有 this error "Please enter an address to continue"。
不需要我的代码来设置地址结帐字段:
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1
);
function wc_npr_filter_phone( $address_fields ) {
$address_fields['billing_phone']['required'] = true;
$address_fields['billing_country']['required'] = false;
$address_fields['billing_last_name']['required'] = false;
$address_fields['billing_city']['required'] = false;
$address_fields['billing_postcode']['required'] = false;
$address_fields['billing_email']['required'] = false;
$address_fields['billing_state']['required'] = false;
$address_fields['billing_address_1']['required'] = false;
$address_fields['billing_address_2']['required'] = false;
return $address_fields;
}
//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields',
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
$address_fields['shipping_first_name']['required'] = false;
$address_fields['shipping_last_name']['required'] = false;
$address_fields['shipping_address_1']['required'] = false;
$address_fields['shipping_address_2']['required'] = false;
$address_fields['shipping_city']['required'] = false;
$address_fields['shipping_country']['required'] = false;
$address_fields['shipping_postcode']['required'] = false;
$address_fields['shipping_state']['required'] = false;
return $address_fields;
}
HTML好像也还行:
如何在 WooCommerce 中创建不需要的结帐地址字段?
您应该需要使用 woocommerce_default_address_fields
过滤器钩子来代替 here。
替换代码:
// Billing and shipping addresses fields
add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
function filter_default_address_fields( $address_fields ) {
// Only on checkout page
if( ! is_checkout() ) return $address_fields;
// All field keys in this array
$key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');
// Loop through each address fields (billing and shipping)
foreach( $key_fields as $key_field )
$address_fields[$key_field]['required'] = false;
return $address_fields;
}
因为帐单电子邮件和 phone 已经默认为必需,如果您不希望它们 不需要,您应该需要这个额外的代码:
// For billing email and phone - Make them not required
add_filter( 'woocommerce_billing_fields', 'filter_billing_fields', 20, 1 );
function filter_billing_fields( $billing_fields ) {
// Only on checkout page
if( ! is_checkout() ) return $billing_fields;
$billing_fields['billing_phone']['required'] = false;
$billing_fields['billing_email']['required'] = false;
return $billing_fields;
}
所有代码都在您的活动子主题(或活动主题)的 function.php 文件中。已测试并有效。
唯一帮助我的是为国家添加一个字段并使其不可见(因为我不需要它)
add_filter( 'woocommerce_checkout_fields', 'your_require_wc_phone_field');
function your_require_wc_phone_field( $fields ) {
$fields['billing']['billing_phone']['required'] = false;
return $fields;
}
此方法使用 'woocommerce_checkout_fields',在我自己的网站上进行测试时,这是我可以将 billing_phone 字段更改为我的问题所必需的唯一方法。