我有一个WordPress Woo-commerce网站,我想根据所选国家/地区在结帐表单上选择州字段 . 例如,我希望我的客户只有在属于美国某州时才添加州字段 .
我该怎么做呢?
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版本或可能有其他原因!!如果有人有类似要求,我建议尝试两种答案 .
试试这个(在你的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; }
当访客不是来自美国时,这将使'state'字段成为可选字段 .希望这可以帮助 .
UPDATE
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; }
万一有人偶然发现了这一点,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; }
3 回答
这是适合我的代码 . 我发布这个答案而没有编辑@zipkundan答案,因为我没有看到他的答案有任何错误,但不知何故它不适合我 . 这可能是因为WooCommerce版本或可能有其他原因!!如果有人有类似要求,我建议尝试两种答案 .
试试这个(在你的functions.php中)
当访客不是来自美国时,这将使'state'字段成为可选字段 .
希望这可以帮助 .
UPDATE
万一有人偶然发现了这一点,Woocommerce改变了州域的名称 . 以下是更新的解决方案: