【问题标题】:WooCommerce pagination + Ajax WP_QueryWooCommerce 分页 + Ajax WP_Query
【发布时间】:2018-11-28 00:53:49
【问题描述】:

我有一个自定义 Wordpress 小部件,它允许用户通过属性(自定义分类)过滤产品。

这一切都是通过 Ajax 调用发生的,但我无法根据过滤结果保持分页是最新的。

例如:

如果页面加载 30 个产品,则 10 个到一个页面 = 3 个结果页。

然后用户按属性过滤,将 30 个产品减少到 20 个。我需要将分页更改为仅 2 页的结果。

以下是替换默认页面内容的WP_Query 示例。您可以看到 woocommerce_pagination() 在此环境中似乎不起作用。

// Args
$args = array(
    'post_type' => 'product',
    'posts_per_page' => 10,
    'orderby' => 'name',
    'order' => 'ASC',
    'tax_query' => $tax_query
);

$query = new WP_Query( $args );

if( $query->have_posts() ) :
    woocommerce_product_loop_start();
    while( $query->have_posts() ): $query->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
    woocommerce_product_loop_end();

    // TODO - get pagination working
    woocommerce_pagination();

    wp_reset_postdata();
else :
    echo '<p>No products found</p>';
endif;

【问题讨论】:

    标签: php ajax wordpress woocommerce


    【解决方案1】:

    WooCommerce 分页基于全局 $wp_query 变量工作。但是您使用的是自己的 $query 变量。这就是为什么它不起作用的原因很明显。

    你有两条路可以走:

    1. 首先是使用query_posts 而不是WP_QUERY 类。
    2. 第二种方法是小技巧,您可以在其中作弊 $wp_query 分页参数。

    这里是:

     global $wp_query;
      $wp_query->max_num_pages=$query->max_num_pages;
      // TODO - get pagination working
      woocommerce_pagination();
    

    【讨论】:

    • 感谢您的帮助!我尝试了$wp_query 作弊,它让我大部分时间都在那里。现在发生的情况是分页按钮的 URL 设置为 /wp-admin/admin-ajax.php?paged=2 表单 action 属性设置为 &lt;?= site_url() ?&gt;/wp-admin/admin-ajax.php
    • 我能够通过this post 的第 2 步解决分页 URL 问题。虽然总是出现新障碍的方式......我的过滤器在单击分页时重新加载页面时被擦除。这是另一天的任务。我会接受 Elvin Haci 的回答!
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 2015-06-18
    • 2018-05-03
    • 2016-09-29
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多