根据所选国家/地区制作不需要的woocommerce结帐表单状态字段

时间:2016-04-09 07:57:33

标签: wordpress woocommerce

我有一个WordPress + Woo-commerce网站,我想根据所选国家/地区在结帐表单上选择州字段。例如,我希望我的客户只有在属于美国的一个州时才添加州字段。

我该怎么做?

3 个答案:

答案 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;
}