我正在尝试在自定义帖子类型单一视图中显示一些自定义过滤产品列表。我扩展了archive-product.php
文件,并用woocommerce_product_loop()
函数替换了woobadge_query_filtered_products()
函数,该函数使用一些自定义的过滤参数来生成/设置全局query_posts
。
然后,我只是使用have_post()
和the_post()
函数来输出产品。我能够正确显示过滤后的产品,并且我手动尝试在URL中使用page
参数,并看到分页正常。
但是问题是视图中没有pagination
。
下面的模板代码:
<?php
/**
* The Template for displaying product badge archives.
* This template can be overridden by copying it to yourtheme/woocommerce/woobadge-archive-product.php
*/
defined( 'ABSPATH' ) || exit;
get_header( 'shop' );
/**
* Hook: woocommerce_before_main_content.
*
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
* @hooked WC_Structured_Data::generate_website_data() - 30
*/
do_action( 'woocommerce_before_main_content' );
// Show filter if enabled
if (vp_option('woo_badge_man_opt.pba_show_filters')) {
echo do_shortcode('[woo_pro_badges_filter_archive_extended]');
}
?>
<header class="woocommerce-products-header">
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<h1 class="woocommerce-products-header__title page-title">Products Archive By `<?php the_title(); ?>`</h1>
<?php endif; ?>
<?php the_content(); ?>
</header>
<?php
// Initiate filtered products query
if ( woobadge_query_filtered_products() ) {
/**
* Hook: woocommerce_before_shop_loop.
*
* @hooked wc_print_notices - 10
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
while ( have_posts() ) {
the_post();
/**
* Hook: woocommerce_shop_loop.
*
* @hooked WC_Structured_Data::generate_product_data() - 10
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
}
woocommerce_product_loop_end();
/**
* Hook: woocommerce_after_shop_loop.
*
* @hooked woocommerce_pagination - 10
*/
do_action( 'woocommerce_after_shop_loop' );
} else {
/**
* Hook: woocommerce_no_products_found.
*
* @hooked wc_no_products_found - 10
*/
do_action( 'woocommerce_no_products_found' );
}
/**
* Hook: woocommerce_after_main_content.
*
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
*/
do_action( 'woocommerce_after_main_content' );
/**
* Hook: woocommerce_sidebar.
*
* @hooked woocommerce_get_sidebar - 10
*/
do_action( 'woocommerce_sidebar' );
get_footer( 'shop' );
?>
似乎woocommerce分页依赖于woocommerce_product_loop
和wc_get_loop_prop
。如何强制分页视图使用全局查询?
注意:我可以确定query_posts
函数生成的woobadge_query_filtered_products
使用的是分页参数。