Как обновить количество в мини-корзине WooCommerce через AJAX? - PullRequest
0 голосов
/ 23 мая 2019

Я работаю над проектом, целью которого является замена страницы / cart на сайте WordPress WooCommerce функцией «Mini Cart», включенной в WooCommerce.

Я обновил Mini Cartчтобы показать добавление продуктов и разрешить удаление продуктов, а также добавление и удаление купонов через AJAX.

Последние 2 пункта в моем списке должны обновлять количества через AJAX, когда включена "Обновленная корзина"нажата кнопка, а также отображает «уведомления» об удалении элементов, добавлении или удалении купонов или попытке создания недействительного купона.

На данный момент, однако, я не могу понять, как это сделать эффективно.

Для справки, вот фрагмент кода, который у меня есть для удаления предмета из мини-корзины.Если честно, я не уверен, что это наиболее эффективно, но, похоже, работает.Тем не менее, он не отображает никаких уведомлений об удалении элемента (тогда как на стандартной странице / странице корзины это отображается, хотя я знаю, что для этого не используется этот же код).

(function ($) {
jQuery(document).on('click', '#slide-out-mini-cart .slide-out-remove', function (e) {

var $thisbutton = $(this),
  $form = $thisbutton.closest('form.woocommerce-cart-form'),
  product_id = $thisbutton.data( "product_id" ),
  cart_item_key = $thisbutton.data("cart_item_key");

if (product_id) {

  e.preventDefault();

  var data = {
    'product_id': product_id,
    'cart_item_key': cart_item_key
  };

  jQuery(document.body).trigger('remove_from_cart', [$thisbutton, data]);

  $.ajax({
    type: 'POST',
    url: woocommerce_params.wc_ajax_url.toString().replace('%%endpoint%%', 'remove_from_cart'),
    data: data,
    beforeSend: function (response) {
      $thisbutton.removeClass('added').addClass('loading');
    },
    complete: function (response) {
      $thisbutton.addClass('added').removeClass('loading');
    },
    success: function (response) {                  
      if (response.error & response.product_url) {
        window.location = response.product_url;
        return;
      }
      jQuery(document.body).trigger('removed_from_cart', [response.fragments, response.cart_hash, $thisbutton]);
    },
  });
  return false;
}       
});
})(jQuery);

Я понимаю,это довольно широкий набор вопросов, но на данный момент мне интересно:

  1. Это самый эффективный способ выполнить эти действия?
  2. Как я могуполучить "уведомления", чтобы показать?
  3. Есть ли подобный скрипт, который я могу использовать для обновления количества мини-корзин через AJAX?

Рад предоставить больше деталей, но, честно говоря, не 'Я не знаю, с чего начать, поэтому оставлю это здесь.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...