将产品添加到购物车而无需加载或重定向

时间:2019-05-13 08:12:42

标签: php ajax redirect woocommerce cart

我正在使用快速查看插件(https://es.wordpress.org/plugins/woocommerce-lightbox/),并且正在寻找一种在快速视图中将产品添加到购物车时将产品添加到购物车中而不重定向或显示加载图标的方法。 在以下网站上,它正在商店页面中使用变体产品:http://dev-ak.com/woocommerce-dev/temp/shop/ 但我也想在我的快速查看窗口中将其用于简单产品。

我知道如何更改重定向链接以链接回商店页面,但这不是我想要的,它不需要重新加载。 我还尝试了将产品添加到购物车后删除重定向的代码,但是该代码不起作用。

对于示例网站,使用了以下代码:

/**
 * Customise variable add to cart button for loop.
 *
 * Remove qty selector and simplify.
 */
  function iconic_loop_variation_add_to_cart_button()
{
    global $product;

    ?>
    <div class="woocommerce-variation-add-to-cart variations_button">
        <button   type="submit" class="custom_add_to_cart single_add_to_cart_button button"><?php echo esc_html($product->single_add_to_cart_text()); ?></button>
        <input type="hidden" name="add-to-cart" value="<?php echo absint($product->get_id()); ?>" />
        <input type="hidden" name="product_id" value="<?php echo absint($product->get_id()); ?>" />
        <input type="hidden" name="variation_id" class="variation_id" value="0" />
    </div>
    <?php
}

Ajax代码:

 jQuery(document).ready(function ($) {
  "use strict";

  $('.custom_add_to_cart').click(function (e) {
    e.preventDefault();
    var id = $(this).next().next().attr('value');
    var data = {
      product_id: id,
      quantity: 1
    };
    $(this).parent().addClass('loading');
                   $.post(wc_add_to_cart_params.wc_ajax_url.toString().replace('%%endpoint     %%', 'add_to_cart'), data, function (response) {

      if (!response) {
        return;
      }
      if (response.error) {
        alert("Custom Massage ");
        $('.custom_add_to_cart').parent().removeClass('loading');
        return;
      }
      if (response) {

        var url = woocommerce_params.wc_ajax_url;
        url = url.replace("%%endpoint%%", "get_refreshed_fragments");
        $.post(url, function (data, status) {
              $(".woocommerce.widget_shopping_cart").html(data.fragments["div.widget_shopping_cart_content"]);
          if (data.fragments) {
            jQuery.each(data.fragments, function (key, value) {

              jQuery(key).replaceWith(value);
            });
          }
          jQuery("body").trigger("wc_fragments_refreshed");
        });
        $('.custom_add_to_cart').parent().removeClass('loading');

      }

    });

 });
});

0 个答案:

没有答案