在核心WooCommerce中,分页是通过woocommerce_pagination()
连接到的函数woocommerce_after_shop_loop
, 排序和结果计数由woocommerce_result_count()
和woocommerce_catalog_ordering()
功能。如果查看这些函数的源代码,可以看到它们按照主菜单显示$wp_query
, 它将不包含任何产品,因为您正在使用自己的WP\\U查询查询帖子。
因此,这可能是非常罕见的情况之一query_posts()
这是正确的做法。如果您使用query_posts()
代替辅助WP\\U查询,这些模板函数应该反映您的自定义查询。
ob_start();
query_posts( apply_filters( \'woocommerce_shortcode_products_query\', $args, $atts ) );
if ( have_posts() ) : ?>
<?php do_action( \'woocommerce_before_shop_loop\' ); //this would show post count and filter ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( \'content\', \'product\' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php do_action( \'woocommerce_after_shop_loop\' ); //this would show pagination ?>
<?php endif;?>
<?php
wp_reset_postdata();
wp_reset_query();
return \'<div class="woocommerce columns-\' . $column . \'">\' . ob_get_clean() . \'</div>\';
注意
wp_reset_query()
, 这在这里非常重要。
但我不确定分页是否能正常工作,您可能需要使用自己的实例paginate_links()
, 提到the documentation 在法典中使用paginate_links()
使用自定义查询。