【问题标题】:Woocommerce create load more products with AjaxWoocommerce 使用 Ajax 创建加载更多产品
【发布时间】:2014-08-25 20:04:46
【问题描述】:

我正在尝试在 Woocommerce 中创建一个使用 Ajax 请求加载更多产品的函数。我的想法是创建一个按钮“加载更多产品”来替换 woocommerce 分页并使用 ajax 请求加载第二个第三个等页面。我已经创建了使用 ajax 请求创建加载更多按钮的脚本并且它可以工作,但我正在尝试创建一个使用 ajax 请求检索其余产品的 php 函数。

在我的代码下面创建加载更多按钮:

    <?php 

    $max_num_pages = $wp_query->max_num_pages;

    if ($max_num_pages > 1) {
        $output .=
    '<script type="text/javascript">
    var page = 1,
    max_page = '.$max_num_pages.'
    jQuery(document).ready(function(){
    jQuery(".woocommerce-pagination").hide();
    jQuery("#woo_load_more").click(function(){
    jQuery(this).hide();
    jQuery("#spinner").show();
    jQuery.ajax({
         type: "POST",
        url: "http://demo.ecquadro.com/transport/wp-admin/admin-ajax.php",
        data: {
            action: "wooPagination",
            page: page+1,
            per_page: 4,
        },
        success: function(data, textStatus, XMLHttpRequest){
            page++;
             jQuery(".prova").append(data);
            jQuery("#spinner").hide();
            if (max_page > page) {
                 jQuery("#woo_load_more").show();
            }
         },
         error: function(MLHttpRequest, textStatus, errorThrown){
             jQuery("#spinner").hide();
             jQuery(this).show();
        }
        });
        });
        });
     </script>
     <div class="woo-products-load">
     <a href="javascript:void(0);" id="woo_load_more" class=""><span>'.__('Load More Posts', '').'</span></a>
     <img id="spinner" src="'.get_template_directory_uri().'/img/loader.gif" style="display: none;">
     </div>';

     }

    echo $output;

    ?>

知道如何创建一个名为“wooPagination”的函数来加载其余页面吗?

提前致谢。

【问题讨论】:

  • 您能准确描述问题所在吗?有什么问题?如果您知道要寻找什么,那么提供帮助会容易得多。
  • 您好,感谢您的评论。我的演示商店中有 12 种产品,每页 4 种产品。我想创建一个使用 ajax 调用加载产品第二页和第三页的函数。您可以在此处查看上面的脚本。 demo.ecquadro.com/transport/products 正如您所看到的,ajax 调用返回“0”值,因为我无法创建 php 函数来加载商店第 2 和第 3 页中包含的其余产品。希望你能帮助我,因为我是 woocommerce 新手。谢谢。

标签: php jquery wordpress woocommerce


【解决方案1】:

最简单的解决方案可能是使用无限滚动脚本。你在这里找到它http://www.infinite-scroll.com/

让您不要从 HTML 输出中删除正常的分页,然后按如下方式将其连接起来(您可能需要更改选择器以适合您的站点):

var infinite_scroll = {
    loading: {
        //img: "/img/loading-animation.gif",
        msgText: '',
    },
    nextSelector: ".pagination a.next",
    navSelector: ".pagination",
    itemSelector: "#main-content ul.products .product-small",
    contentSelector: "#main-content ul.products"
};

//Unbind load more on scroll
$(window).unbind('.infscr');

//
$("#load-more-button").click( function() {
    $(document).trigger('retrieve.infscr');
});

【讨论】:

  • 感谢您的努力 :-)
  • 您好,感谢您的回答。该解决方案按我的预期工作,但我还有一个问题。我正在使用 Isotope jQuery 过滤产品类别,但似乎该查询仅适用于加载的第一页。知道如何在 ajax 调用后刷新 Isotope jQuery 吗?谢谢。
  • 尝试添加此代码 $container.isotope('insert',data);在 jQuery(".prova").append(data); 之后
猜你喜欢
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2023-01-22
  • 2016-11-13
  • 2015-11-02
相关资源
最近更新 更多