wordpress分页页面/3使用索引模板而不是分类产品cat



我已经为wooccommerce自定义产品添加了分页,直到第2页,一切都很好。我一点击第3页,就什么都没有显示,而且它以某种方式使用了第3页上的索引模板。我不确定我哪里做错了。

我还试着在WordPress阅读设置中将每页帖子改为6个。

<?php    
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$category_id = "clothing"; 
$args = array(
'post_type'        => 'product',
'posts_per_page'   => 6, 
'post_status'      => 'publish',
'suppress_filters' => false,
'paged' => $paged,
'tax_query'        => array(
array(
'taxonomy' => 'product_cat',
'terms'    => $category_id,
'field'           => 'slug'
),
),

);
$products_query = new WP_Query($args);
echo $total_pages = $products_query->max_num_pages;
// echo "<pre>"; print_r($products_query);
if($products_query->have_posts()){
foreach($products_query->posts as $product_id){
echo $product = wc_get_product($product_id);
echo  $product_title = get_the_title($product_id);
echo  $product_image = get_the_post_thumbnail($product_id);
echo  $product_price = $product->get_price();
echo  $product_link = get_the_permalink($product_id);
}
} 
if ($total_pages > 1) :{
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text'    => __('« prev'),
'next_text'    => __('next »'),
));
}    
endif;
wp_reset_postdata(); ?>

您应该在functions.php文件上使用pre_get_posts钩子。因为在包含模板之后用新的WP_query更改分页查询已经太晚了。包括分类法产品cat是由Reading Settings上的常规posts_per_page值决定的。

add_action( 'pre_get_posts', function ($query) {
if ( is_admin() || !$query->is_main_query() ) return;
if ( $query->is_tax( 'product_cat' ) ) {
$query->set('posts_per_page', 6 );
}
});

最新更新