我有一个WordPress + Woo-commerce网站,我想根据所选国家/地区在结帐表单上选择州字段。例如,我希望我的客户只有在属于美国的一个州时才添加州字段。
我该怎么做?
答案 0 :(得分:3)
add_filter( 'woocommerce_default_address_fields' , 'custom_override_state_required' );
function custom_override_state_required( $address_fields ) {
$wc = WC();
$country = $wc->customer->get_country();
if($country !== 'US'){
$address_fields['state']['required'] = false;
}
return $address_fields;
}
这是适用于我的代码。我在没有编辑@zipkundan答案的情况下发布了这个答案,因为我没有看到他的答案中有任何错误,但不知怎的,它对我不起作用。这可能是因为WooCommerce版本或可能有其他原因!!如果有人有类似要求,我建议尝试两种答案。
答案 1 :(得分:2)
试试这个(在你的functions.php中)
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
function custom_override_default_address_fields( $address_fields ) {
global $woocommerce;
$country = $woocommerce->customer->get_country();
if($country !== 'US'){
$address_fields['state']['required'] = false;
}
return $address_fields;
}
当访客不是来自美国时,这将使“州”字段可选 希望这会有所帮助。
<强>更新强>
add_filter( 'woocommerce_checkout_fields', 'custom_override_default_address_fields' );
function custom_override_default_address_fields($fields){
global $woocommerce;
$country = $woocommerce->customer->get_country();
if($country !== 'US'){
$fields['billing']['state']['required'] = false;
$fields['shipping']['state']['required'] = false;
}
return $fields;
}
答案 2 :(得分:1)
如果有人偶然发现,Woocommerce改变了州字段的名称。以下是更新的解决方案:
add_filter( 'woocommerce_checkout_fields','custom_override_default_address_fields' );
function custom_override_default_address_fields($fields){
global $woocommerce;
$country = $woocommerce->customer->get_country();
if($country !== 'US'){
$fields['billing']['billing_state']['required'] = false;
$fields['shipping']['shipping_state']['required'] = false;
}
return $fields;
}