使用Wordpress Infinite Scroll加载产品后再次重新初始化Woocommerce脚本

时间:2018-01-18 19:18:22

标签: php jquery ajax wordpress woocommerce

我正在运行带有infinite scroll plugin的Wordpress Woocommerce-Shop,以便在我的商店页面上自动加载下一组产品。

有一些带有下拉菜单的可变产品,在选择属性后显示价格(默认的woocommerce功能)。

enter image description here

Unfortunatley此功能仅适用于初始页面加载和打破在向下滚动后加载无限滚动的产品。

所以我想我必须重新初始化每个infinte页面滚动后再次负责该函数的js脚本。无限滚动插件具有以下内容 部分(function(newElements)..)在加载新元素后初始化函数。 任何想法(如果可能更新安全)如何重新初始化变量产品的woocommerce脚本?我想它至少是add-to-cart-variation.min.js

    if (obj_nes.infinitescroll != 'disable') {
    nextSelector = obj_nes.nextselector;
    nextSelector = '#navigation #navigation-next a';

    $masonry.infinitescroll({
        navSelector : '#navigation',
        nextSelector : nextSelector,
        itemSelector : '.product',
        prefill: true,
        bufferPx : 900,
        loading: {
            msgText: '', 
            img: '',
            finished: function() {}
        }
    }, function(newElements) {

        // Initialize again

    });
}

1 个答案:

答案 0 :(得分:0)

所以我解决了这个问题。希望这有助于其他人。

使变量产品下拉菜单工作的最安全且几乎“更新保存”的方法是在再次加载新产品对后加载add-to-cart-variation.min.js。请关注// Initialize again部分:

if (obj_nes.infinitescroll != 'disable') {
nextSelector = obj_nes.nextselector;
nextSelector = '#navigation #navigation-next a';

$masonry.infinitescroll({
    navSelector : '#navigation',
    nextSelector : nextSelector,
    itemSelector : '.product',
    prefill: true,
    bufferPx : 900,
    loading: {
        msgText: '', 
        img: '',
        finished: function() {}
    }
    }, function(newElements) {

        // Initialize again

        // if wp is installed in a subfolder
        // $.getScript("../wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");

        $.getScript("/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");

    });
}

<强>更新

缓存脚本文件的更好方法! getScript()调用jQuery.get()女巫是

的简写Ajax function
$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

因此,通过调用getScript()进行ajax调用,jQuery没有保留文件的任何缓存。要缓存文件,请使用以下

if (obj_nes.infinitescroll != 'disable') {
nextSelector = obj_nes.nextselector;
nextSelector = '#navigation #navigation-next a';

$masonry.infinitescroll({
    navSelector : '#navigation',
    nextSelector : nextSelector,
    itemSelector : '.product',
    prefill: true,
    bufferPx : 900,
    loading: {
        msgText: '', 
        img: '',
        finished: function() {}
    }
    }, function(newElements) {

      // Initialize again

      $.ajax({
          type: "GET",

          // if wp is installed in a subfolder   
          // url: "../sichere-anwendung/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js",

          url: "/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js"),
          cache: true
            });

    });
}