woocommerce/assets/js/frontend/geolocation.js

51 lines
1.4 KiB
JavaScript

jQuery( function( $ ) {
var this_page = window.location.toString();
var $append_hashes = function() {
if ( wc_geolocation_params.hash ) {
$( "a[href^='" + wc_geolocation_params.home_url + "']:not(a[href*='v=']), a[href^='/']:not(a[href*='v='])").each( function() {
var $this = $(this);
var href = $this.attr('href');
if ( href.indexOf( '?' ) > 0 ) {
$this.attr( "href", href + '&v=' + wc_geolocation_params.hash );
} else {
$this.attr( "href", href + '?v=' + wc_geolocation_params.hash );
}
});
}
}
var $geolocation_redirect = function( hash ) {
if ( this_page.indexOf( '?v=' ) > 0 || this_page.indexOf( '&v=' ) > 0 ) {
this_page = this_page.replace( /v=[^&]+/,"v=" + hash );
} else if ( this_page.indexOf( '?' ) > 0 ) {
this_page = this_page + '&v=' + hash;
} else {
this_page = this_page + '?v=' + hash;
}
window.location = this_page;
}
var $geolocate_customer = {
url: wc_geolocation_params.wc_ajax_url + 'get_customer_location',
type: 'GET',
success: function( response ) {
if ( response.success && response.data.hash && response.data.hash !== wc_geolocation_params.hash ) {
$geolocation_redirect( response.data.hash );
}
}
};
if ( 0 > this_page.indexOf( '?v=' ) && 0 > this_page.indexOf( '&v=' ) && '1' !== wc_geolocation_params.is_checkout ) {
$.ajax( $geolocate_customer );
}
$( document.body ).on( 'added_to_cart', function() {
$append_hashes();
});
$append_hashes();
});