对于特定国家/地区,在Woocommerce结帐中将城市替换为所选的州值

时间:2018-10-04 12:04:40

标签: php jquery wordpress woocommerce checkout

在Woocommerce中,我编写了billing_state的代码来使用运费。现在,我想将值从billing_state写入billing_city,当更改billing_state时,billing_city也随之更改

这是我的自定义州代码:

add_filter( 'woocommerce_states', 'vietnam_cities_woocommerce' );
function vietnam_cities_woocommerce( $states ) {
  $states['VN'] = array(
    'HCM' => __('Hồ Chí Minh', 'woocommerce') ,
    'HANOI' => __('Hà Nội', 'woocommerce') ,
    'HAIPHONG' => __('Hải Phòng', 'woocommerce') ,

  );

  return $states;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在结帐页面中的国家/地区为越南(VN)时,以下代码将从州值填充城市:

// Add checkout custom select fields
add_action( 'wp_footer', 'custom_checkout_city_field', 20, 1 );
function custom_checkout_city_field() {
    // Only checkout page
    if( is_checkout() && ! is_wc_endpoint_url() ):

    $country = 'VN'; //  <=== <=== The country code
    // $states   = WC()->countries->get_shipping_country_states()[$country];


    ?>
    <script type="text/javascript">
    jQuery(function($){
        var c = '<?php echo $country; ?>',  f = 'form.checkout';

        // On billing state change
        $(f).on('change', '#billing_state', function(){
            if($('#billing_country').val() == c ){
                $('#billing_city').val($(this).val());
            }
        });

        // On shipping state change
        $(f).on('change', '#shipping_state', function(){
            if($('#shipping_country').val() == c ){
                $('#shipping_city').val($(this).val());
            }
        });
    });
    </script>
    <?php
    endif;
}

代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。