автозаполнение адреса

PHOTO EMBED

Wed Feb 02 2022 14:38:40 GMT+0000 (Coordinated Universal Time)

Saved by @mastaklance

/* ************************************ BILLING ADDRESS AUTOCOMPLETE ********************************** */

add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts');

function my_enqueue_scripts() {
     //load script only on checkout
    if(function_exists('is_checkout') && is_checkout()){
        $api_key = 'google-api-here!!!!!!';
        $url = "https://maps.googleapis.com/maps/api/js?key=$api_key&libraries=places";
        wp_enqueue_script( 'google-places-js', $url );
    }

}


// BILLING ADDRESS AUTOCOMPLETE JS

function autocomplete_footer_js_checkout() {
     //load script only on checkout
     if (function_exists('is_checkout') && is_checkout()) { ?>
     <script>
     jQuery(function($) {     

          //Attach the autocomplete to the DOM element
          var billing_autocomplete = new google.maps.places.Autocomplete($('#billing_address_1')[0], 
          {
          //Define what information we want back from the API          
          componentRestrictions: { country: "us" },
          fields: ["address_components", "geometry"],
          types: ["address"],
          strictBounds: true,        
          });          

          //Define a handler which fires when an address is chosen from the autocomplete
          billing_autocomplete.addListener('place_changed', function() {

          var place = billing_autocomplete.getPlace();
          var street_number = '';
          var street_name = '';
          var city = '';
          var suburb = '';
          for (var component of place.address_components) {
               var componentType = component.types[0];

               switch (componentType) {
                    case "street_number": {
                    street_number = component.long_name;
                    break;
                    }
                    case "route": {
                    street_name = component.long_name;
                    break;
                    }
                    case "locality": {
                    city = component.long_name;
                    break;
                    }
                    case "sublocality_level_1": {                    
                    suburb = component.long_name;
                    break;
                    }
               }
          }
          
          console.log(place.address_components);

          $('#billing_address_1').val(street_name + ' ' + street_number);
          $('#billing_city').val(city + ', ' + suburb);
          });
     });
     </script>
     <?php
     }
}
add_action( 'wp_footer', 'autocomplete_footer_js_checkout');
content_copyCOPY