Added endpoint for faster ajax requests
This commit is contained in:
parent
f04ebeb78e
commit
21c5513526
File diff suppressed because one or more lines are too long
|
@ -18,9 +18,7 @@ jQuery( function( $ ) {
|
|||
$thisbutton.removeClass( 'added' );
|
||||
$thisbutton.addClass( 'loading' );
|
||||
|
||||
var data = {
|
||||
action: 'woocommerce_add_to_cart',
|
||||
};
|
||||
var data = {};
|
||||
|
||||
$.each( $thisbutton.data(), function( key, value ) {
|
||||
data[key] = value;
|
||||
|
@ -30,7 +28,7 @@ jQuery( function( $ ) {
|
|||
$( 'body' ).trigger( 'adding_to_cart', [ $thisbutton, data ] );
|
||||
|
||||
// Ajax action
|
||||
$.post( wc_add_to_cart_params.ajax_url, data, function( response ) {
|
||||
$.post( wc_add_to_cart_params.wc_ajax_url + 'add_to_cart', data, function( response ) {
|
||||
|
||||
if ( ! response )
|
||||
return;
|
||||
|
|
|
@ -1 +1 @@
|
|||
jQuery(function(a){return"undefined"==typeof wc_add_to_cart_params?!1:void a(document).on("click",".add_to_cart_button",function(){var b=a(this);if(b.is(".product_type_simple")){if(!b.attr("data-product_id"))return!0;b.removeClass("added"),b.addClass("loading");var c={action:"woocommerce_add_to_cart"};return a.each(b.data(),function(a,b){c[a]=b}),a("body").trigger("adding_to_cart",[b,c]),a.post(wc_add_to_cart_params.ajax_url,c,function(c){if(c){var d=window.location.toString();return d=d.replace("add-to-cart","added-to-cart"),c.error&&c.product_url?void(window.location=c.product_url):"yes"===wc_add_to_cart_params.cart_redirect_after_add?void(window.location=wc_add_to_cart_params.cart_url):(b.removeClass("loading"),fragments=c.fragments,cart_hash=c.cart_hash,fragments&&a.each(fragments,function(b){a(b).addClass("updating")}),a(".shop_table.cart, .updating, .cart_totals").fadeTo("400","0.6").block({message:null,overlayCSS:{opacity:.6}}),b.addClass("added"),wc_add_to_cart_params.is_cart||0!==b.parent().find(".added_to_cart").size()||b.after(' <a href="'+wc_add_to_cart_params.cart_url+'" class="added_to_cart wc-forward" title="'+wc_add_to_cart_params.i18n_view_cart+'">'+wc_add_to_cart_params.i18n_view_cart+"</a>"),fragments&&a.each(fragments,function(b,c){a(b).replaceWith(c)}),a(".widget_shopping_cart, .updating").stop(!0).css("opacity","1").unblock(),a(".shop_table.cart").load(d+" .shop_table.cart:eq(0) > *",function(){a(".shop_table.cart").stop(!0).css("opacity","1").unblock(),a("body").trigger("cart_page_refreshed")}),a(".cart_totals").load(d+" .cart_totals:eq(0) > *",function(){a(".cart_totals").stop(!0).css("opacity","1").unblock()}),a("body").trigger("added_to_cart",[fragments,cart_hash,b]),void 0)}}),!1}return!0})});
|
||||
jQuery(function(a){return"undefined"==typeof wc_add_to_cart_params?!1:void a(document).on("click",".add_to_cart_button",function(){var b=a(this);if(b.is(".product_type_simple")){if(!b.attr("data-product_id"))return!0;b.removeClass("added"),b.addClass("loading");var c={};return a.each(b.data(),function(a,b){c[a]=b}),a("body").trigger("adding_to_cart",[b,c]),a.post(wc_add_to_cart_params.wc_ajax_url+"add_to_cart",c,function(c){if(c){var d=window.location.toString();return d=d.replace("add-to-cart","added-to-cart"),c.error&&c.product_url?void(window.location=c.product_url):"yes"===wc_add_to_cart_params.cart_redirect_after_add?void(window.location=wc_add_to_cart_params.cart_url):(b.removeClass("loading"),fragments=c.fragments,cart_hash=c.cart_hash,fragments&&a.each(fragments,function(b){a(b).addClass("updating")}),a(".shop_table.cart, .updating, .cart_totals").fadeTo("400","0.6").block({message:null,overlayCSS:{opacity:.6}}),b.addClass("added"),wc_add_to_cart_params.is_cart||0!==b.parent().find(".added_to_cart").size()||b.after(' <a href="'+wc_add_to_cart_params.cart_url+'" class="added_to_cart wc-forward" title="'+wc_add_to_cart_params.i18n_view_cart+'">'+wc_add_to_cart_params.i18n_view_cart+"</a>"),fragments&&a.each(fragments,function(b,c){a(b).replaceWith(c)}),a(".widget_shopping_cart, .updating").stop(!0).css("opacity","1").unblock(),a(".shop_table.cart").load(d+" .shop_table.cart:eq(0) > *",function(){a(".shop_table.cart").stop(!0).css("opacity","1").unblock(),a("body").trigger("cart_page_refreshed")}),a(".cart_totals").load(d+" .cart_totals:eq(0) > *",function(){a(".cart_totals").stop(!0).css("opacity","1").unblock()}),a("body").trigger("added_to_cart",[fragments,cart_hash,b]),void 0)}}),!1}return!0})});
|
|
@ -16,9 +16,8 @@ jQuery( function( $ ) {
|
|||
}
|
||||
|
||||
$fragment_refresh = {
|
||||
url: wc_cart_fragments_params.ajax_url,
|
||||
url: wc_cart_fragments_params.wc_ajax_url + 'get_refreshed_fragments',
|
||||
type: 'POST',
|
||||
data: { action: 'woocommerce_get_refreshed_fragments' },
|
||||
success: function( data ) {
|
||||
if ( data && data.fragments ) {
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
jQuery(function(a){if("undefined"==typeof wc_cart_fragments_params)return!1;try{$supports_html5_storage="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc")}catch(b){$supports_html5_storage=!1}if($fragment_refresh={url:wc_cart_fragments_params.ajax_url,type:"POST",data:{action:"woocommerce_get_refreshed_fragments"},success:function(b){b&&b.fragments&&(a.each(b.fragments,function(b,c){a(b).replaceWith(c)}),$supports_html5_storage&&(sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(b.fragments)),sessionStorage.setItem("wc_cart_hash",b.cart_hash)),a("body").trigger("wc_fragments_refreshed"))}},$supports_html5_storage){a("body").bind("added_to_cart",function(a,b,c){sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(b)),sessionStorage.setItem("wc_cart_hash",c)});try{var c=a.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),d=sessionStorage.getItem("wc_cart_hash"),e=a.cookie("woocommerce_cart_hash");if((null===d||void 0===d||""===d)&&(d=""),(null===e||void 0===e||""===e)&&(e=""),!c||!c["div.widget_shopping_cart_content"]||d!=e)throw"No fragment";a.each(c,function(b,c){a(b).replaceWith(c)}),a("body").trigger("wc_fragments_loaded")}catch(b){a.ajax($fragment_refresh)}}else a.ajax($fragment_refresh);a.cookie("woocommerce_items_in_cart")>0?a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show():a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").hide(),a("body").bind("adding_to_cart",function(){a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show()})});
|
||||
jQuery(function(a){if("undefined"==typeof wc_cart_fragments_params)return!1;try{$supports_html5_storage="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc")}catch(b){$supports_html5_storage=!1}if($fragment_refresh={url:wc_cart_fragments_params.wc_ajax_url+"get_refreshed_fragments",type:"POST",success:function(b){b&&b.fragments&&(a.each(b.fragments,function(b,c){a(b).replaceWith(c)}),$supports_html5_storage&&(sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(b.fragments)),sessionStorage.setItem("wc_cart_hash",b.cart_hash)),a("body").trigger("wc_fragments_refreshed"))}},$supports_html5_storage){a("body").bind("added_to_cart",function(a,b,c){sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(b)),sessionStorage.setItem("wc_cart_hash",c)});try{var c=a.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),d=sessionStorage.getItem("wc_cart_hash"),e=a.cookie("woocommerce_cart_hash");if((null===d||void 0===d||""===d)&&(d=""),(null===e||void 0===e||""===e)&&(e=""),!c||!c["div.widget_shopping_cart_content"]||d!=e)throw"No fragment";a.each(c,function(b,c){a(b).replaceWith(c)}),a("body").trigger("wc_fragments_loaded")}catch(b){a.ajax($fragment_refresh)}}else a.ajax($fragment_refresh);a.cookie("woocommerce_items_in_cart")>0?a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show():a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").hide(),a("body").bind("adding_to_cart",function(){a(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show()})});
|
|
@ -27,12 +27,11 @@ jQuery( function( $ ) {
|
|||
});
|
||||
|
||||
var data = {
|
||||
action: 'woocommerce_update_shipping_method',
|
||||
security: wc_cart_params.update_shipping_method_nonce,
|
||||
shipping_method: shipping_methods
|
||||
};
|
||||
|
||||
$.post( wc_cart_params.ajax_url, data, function( response ) {
|
||||
$.post( wc_cart_params.wc_ajax_url + 'update_shipping_method', data, function( response ) {
|
||||
|
||||
$( 'div.cart_totals' ).replaceWith( response );
|
||||
$( 'body' ).trigger( 'updated_shipping_method' );
|
||||
|
|
|
@ -1 +1 @@
|
|||
jQuery(function(a){return"undefined"==typeof wc_cart_params?!1:(a(document).on("click",".shipping-calculator-button",function(){return a(".shipping-calculator-form").slideToggle("slow"),!1}).on("change","select.shipping_method, input[name^=shipping_method]",function(){var b=[];a("select.shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]").each(function(){b[a(this).data("index")]=a(this).val()}),a("div.cart_totals").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={action:"woocommerce_update_shipping_method",security:wc_cart_params.update_shipping_method_nonce,shipping_method:b};a.post(wc_cart_params.ajax_url,c,function(b){a("div.cart_totals").replaceWith(b),a("body").trigger("updated_shipping_method")})}),void a(".shipping-calculator-form").hide())});
|
||||
jQuery(function(a){return"undefined"==typeof wc_cart_params?!1:(a(document).on("click",".shipping-calculator-button",function(){return a(".shipping-calculator-form").slideToggle("slow"),!1}).on("change","select.shipping_method, input[name^=shipping_method]",function(){var b=[];a("select.shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]").each(function(){b[a(this).data("index")]=a(this).val()}),a("div.cart_totals").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={security:wc_cart_params.update_shipping_method_nonce,shipping_method:b};a.post(wc_cart_params.wc_ajax_url+"update_shipping_method",c,function(b){a("div.cart_totals").replaceWith(b),a("body").trigger("updated_shipping_method")})}),void a(".shipping-calculator-form").hide())});
|
|
@ -220,7 +220,6 @@ jQuery( function( $ ) {
|
|||
});
|
||||
|
||||
var data = {
|
||||
action: 'woocommerce_update_order_review',
|
||||
security: wc_checkout_params.update_order_review_nonce,
|
||||
shipping_method: shipping_methods,
|
||||
payment_method: payment_method,
|
||||
|
@ -241,7 +240,7 @@ jQuery( function( $ ) {
|
|||
|
||||
wc_checkout_form.xhr = $.ajax({
|
||||
type: 'POST',
|
||||
url: wc_checkout_params.ajax_url,
|
||||
url: wc_checkout_params.wc_ajax_url + 'update_order_review',
|
||||
data: data,
|
||||
success: function( data ) {
|
||||
// Always update the fragments
|
||||
|
@ -420,14 +419,13 @@ jQuery( function( $ ) {
|
|||
});
|
||||
|
||||
var data = {
|
||||
action: 'woocommerce_apply_coupon',
|
||||
security: wc_checkout_params.apply_coupon_nonce,
|
||||
coupon_code: $form.find( 'input[name=coupon_code]' ).val()
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: wc_checkout_params.ajax_url,
|
||||
url: wc_checkout_params.wc_ajax_url + 'apply_coupon',
|
||||
data: data,
|
||||
success: function( code ) {
|
||||
$( '.woocommerce-error, .woocommerce-message' ).remove();
|
||||
|
@ -460,14 +458,13 @@ jQuery( function( $ ) {
|
|||
});
|
||||
|
||||
var data = {
|
||||
action: 'woocommerce_remove_coupon',
|
||||
security: wc_checkout_params.remove_coupon_nonce,
|
||||
coupon: coupon
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: wc_checkout_params.ajax_url,
|
||||
url: wc_checkout_params.wc_ajax_url + 'remove_coupon',
|
||||
data: data,
|
||||
success: function( code ) {
|
||||
$( '.woocommerce-error, .woocommerce-message' ).remove();
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -18,10 +18,68 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
class WC_AJAX {
|
||||
|
||||
/**
|
||||
* Hook in methods
|
||||
* Hook in ajax handlers
|
||||
*/
|
||||
public static function init() {
|
||||
add_action( 'init', array( __CLASS__, 'add_endpoint') );
|
||||
add_action( 'parse_query', array( __CLASS__, 'do_wc_ajax'), 0 );
|
||||
|
||||
self::add_ajax_events();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add our endpoint for frontend ajax requests
|
||||
*/
|
||||
public static function add_endpoint() {
|
||||
add_rewrite_tag( '%wc-ajax%', '([^/]*)' );
|
||||
add_rewrite_rule( 'wc-ajax/([^/]*)/?', 'index.php?wc-ajax=$matches[1]', 'top' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get WC Ajax Endpoint
|
||||
* @param string $request Optional
|
||||
* @param string $ssl Optional
|
||||
* @return string
|
||||
*/
|
||||
public static function get_endpoint( $request = '', $ssl = null ) {
|
||||
if ( is_null( $ssl ) ) {
|
||||
$scheme = parse_url( home_url(), PHP_URL_SCHEME );
|
||||
} elseif ( $ssl ) {
|
||||
$scheme = 'https';
|
||||
} else {
|
||||
$scheme = 'http';
|
||||
}
|
||||
|
||||
if ( strstr( get_option( 'permalink_structure' ), '/index.php/' ) ) {
|
||||
$endpoint = trailingslashit( home_url( '/index.php/wc-ajax/' . $request, $scheme ) );
|
||||
} elseif ( get_option( 'permalink_structure' ) ) {
|
||||
$endpoint = trailingslashit( home_url( '/wc-ajax/' . $request, $scheme ) );
|
||||
} else {
|
||||
$endpoint = add_query_arg( 'wc-ajax', $request, trailingslashit( home_url( '', $scheme ) ) );
|
||||
}
|
||||
|
||||
return esc_url_raw( $endpoint );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for WC Ajax request and fire action
|
||||
*/
|
||||
public static function do_wc_ajax() {
|
||||
global $wp_query;
|
||||
|
||||
if ( $action = $wp_query->get( 'wc-ajax' ) ) {
|
||||
if ( ! defined( 'DOING_AJAX' ) ) {
|
||||
define( 'DOING_AJAX', true );
|
||||
}
|
||||
do_action( 'wc_ajax_' . sanitize_text_field( $action ) );
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook in methods - uses WordPress ajax handlers (admin-ajax)
|
||||
*/
|
||||
public static function add_ajax_events() {
|
||||
// woocommerce_EVENT => nopriv
|
||||
$ajax_events = array(
|
||||
'get_refreshed_fragments' => true,
|
||||
|
@ -74,6 +132,9 @@ class WC_AJAX {
|
|||
|
||||
if ( $nopriv ) {
|
||||
add_action( 'wp_ajax_nopriv_woocommerce_' . $ajax_event, array( __CLASS__, $ajax_event ) );
|
||||
|
||||
// WC AJAX can be used for frontend ajax requests
|
||||
add_action( 'wc_ajax_' . $ajax_event, array( __CLASS__, $ajax_event ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -194,7 +194,8 @@ class WC_Frontend_Scripts {
|
|||
switch ( $handle ) {
|
||||
case 'woocommerce' :
|
||||
return array(
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'wc_ajax_url' => WC_AJAX::get_endpoint()
|
||||
);
|
||||
break;
|
||||
case 'wc-single-product' :
|
||||
|
@ -206,6 +207,7 @@ class WC_Frontend_Scripts {
|
|||
case 'wc-checkout' :
|
||||
return array(
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'wc_ajax_url' => WC_AJAX::get_endpoint(),
|
||||
'update_order_review_nonce' => wp_create_nonce( 'update-order-review' ),
|
||||
'apply_coupon_nonce' => wp_create_nonce( 'apply-coupon' ),
|
||||
'remove_coupon_nonce' => wp_create_nonce( 'remove-coupon' ),
|
||||
|
@ -225,18 +227,21 @@ class WC_Frontend_Scripts {
|
|||
case 'wc-cart' :
|
||||
return array(
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'wc_ajax_url' => WC_AJAX::get_endpoint(),
|
||||
'update_shipping_method_nonce' => wp_create_nonce( "update-shipping-method" ),
|
||||
);
|
||||
break;
|
||||
case 'wc-cart-fragments' :
|
||||
return array(
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'wc_ajax_url' => WC_AJAX::get_endpoint(),
|
||||
'fragment_name' => apply_filters( 'woocommerce_cart_fragment_name', 'wc_fragments' )
|
||||
);
|
||||
break;
|
||||
case 'wc-add-to-cart' :
|
||||
return array(
|
||||
'ajax_url' => WC()->ajax_url(),
|
||||
'wc_ajax_url' => WC_AJAX::get_endpoint(),
|
||||
'i18n_view_cart' => esc_attr__( 'View Cart', 'woocommerce' ),
|
||||
'cart_url' => wc_get_page_permalink( 'cart' ),
|
||||
'is_cart' => is_cart(),
|
||||
|
|
|
@ -207,15 +207,12 @@ final class WooCommerce {
|
|||
include_once( 'includes/class-wc-download-handler.php' );
|
||||
include_once( 'includes/class-wc-comments.php' );
|
||||
include_once( 'includes/class-wc-post-data.php' );
|
||||
include_once( 'includes/class-wc-ajax.php' );
|
||||
|
||||
if ( $this->is_request( 'admin' ) ) {
|
||||
include_once( 'includes/admin/class-wc-admin.php' );
|
||||
}
|
||||
|
||||
if ( $this->is_request( 'ajax' ) ) {
|
||||
$this->ajax_includes();
|
||||
}
|
||||
|
||||
if ( $this->is_request( 'frontend' ) ) {
|
||||
$this->frontend_includes();
|
||||
}
|
||||
|
@ -241,13 +238,6 @@ final class WooCommerce {
|
|||
include_once( 'includes/class-wc-language-pack-upgrader.php' ); // Download/update languages
|
||||
}
|
||||
|
||||
/**
|
||||
* Include required ajax files.
|
||||
*/
|
||||
public function ajax_includes() {
|
||||
include_once( 'includes/class-wc-ajax.php' ); // Ajax functions for admin and the front-end
|
||||
}
|
||||
|
||||
/**
|
||||
* Include required frontend files.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue