为什么需要国家/地区下拉字段不会阻止结帐 - WooCommerce
Why required country dropdown Field not preventing checkout - WooCommerce
标题似乎是一个简单的修复,但它表明它是一个必填字段 - 但允许结帐而无需选择任何选项并且 select 选项仅显示。
我正在使用 我之前问题的答案代码,这样:
add_filter( 'woocommerce_form_field_country', 'filter_form_field_country', 10, 4 );
function filter_form_field_country( $field, $key, $args, $value ) {
// Only in checkout page for "billing" city field
if ( is_checkout() && 'billing_country' === $key ) {
$search = esc_html__( 'Select a country / region…', 'woocommerce' ); // String to search
$replace = esc_html__( 'Select option to pay correct tax', 'woocommerce' ); // Replacement string
$field = str_replace( $search, $replace, $field );
}
return $field;
}
add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_country']['label'] = __('Are you purchasing as a Company Y/N or from the UK?', 'woocommerce');
$fields['billing']['billing_country']['required'] = true;
return $fields;
}
有人看到有冲突吗?
在 WooCommerce 中,国家/地区下拉字段默认选项没有空值,而是“默认”值,如您所见in this source code...因此您需要添加以下内容,当所选值为“默认值”时",以避免结帐时显示错误通知:
add_action( 'woocommerce_after_checkout_validation', 'checkout_validation_billing_country', 9999, 2 );
function checkout_validation_billing_country( $data, $errors ){
// Check for any validation errors
if ( isset($_POST['billing_country']) && $_POST['billing_country'] === 'default' ){
$errors->add( 'validation', __('<strong>Billing Country</strong> is a required field. Please select your country.', 'woocommerce') );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
标题似乎是一个简单的修复,但它表明它是一个必填字段 - 但允许结帐而无需选择任何选项并且 select 选项仅显示。
我正在使用
add_filter( 'woocommerce_form_field_country', 'filter_form_field_country', 10, 4 );
function filter_form_field_country( $field, $key, $args, $value ) {
// Only in checkout page for "billing" city field
if ( is_checkout() && 'billing_country' === $key ) {
$search = esc_html__( 'Select a country / region…', 'woocommerce' ); // String to search
$replace = esc_html__( 'Select option to pay correct tax', 'woocommerce' ); // Replacement string
$field = str_replace( $search, $replace, $field );
}
return $field;
}
add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_country']['label'] = __('Are you purchasing as a Company Y/N or from the UK?', 'woocommerce');
$fields['billing']['billing_country']['required'] = true;
return $fields;
}
有人看到有冲突吗?
在 WooCommerce 中,国家/地区下拉字段默认选项没有空值,而是“默认”值,如您所见in this source code...因此您需要添加以下内容,当所选值为“默认值”时",以避免结帐时显示错误通知:
add_action( 'woocommerce_after_checkout_validation', 'checkout_validation_billing_country', 9999, 2 );
function checkout_validation_billing_country( $data, $errors ){
// Check for any validation errors
if ( isset($_POST['billing_country']) && $_POST['billing_country'] === 'default' ){
$errors->add( 'validation', __('<strong>Billing Country</strong> is a required field. Please select your country.', 'woocommerce') );
}
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。