我在同一页面上有三个循环。
一切正常,但在分页(pagenavi)中,max_num_pages会考虑所有帖子,忽略了像“post__not_in”这样的标准。或者' cat'。
如果我使用这个循环,pagenavi的最后一页仍然是空白的(计算隐藏的帖子,但不要显示它们):
if ($loop3->have_posts()) : while ($loop3->have_posts()) : $loop3->the_post();
如果我使用这个循环(循环3),pagenavi的最后一页显示"隐藏"帖子:
if (have_posts()) : while (have_posts()) : the_post();
如何强制wp_query循环排除max_num_pages计数的隐藏帖子?
//loop 1
<?php
$loop1 = new WP_query(array(
'category_name' => 'highlight',
'posts_per_page' => 1,
));
if($loop1->have_posts()) : $firstPosts = array(); while($loop1->have_posts()) : $loop1->the_post();
$firstPosts[] = $post->ID;
?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
//loop 2
<?php
$loop2 = new WP_query(array(
'post__not_in' => $firstPosts,
'category_name' => 'highlight',
'posts_per_page' => 2,
));
if($loop2->have_posts()) : while($loop2->have_posts()) : $loop2->the_post();
$firstPosts[] = $post->ID;
?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
//loop 3
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'paged' => $paged,
'post__not_in' => $firstPosts,
'cat' => -23,
);
$loop3 = new WP_Query( $args );
if ($loop3->have_posts()) : while ($loop3->have_posts()) : $loop3->the_post();
?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
//other stuff
//pagenavi
<?php wp_pagenavi("", "", array(
'query' => $loop3,
'first_text' => 'lorem ipsum',
'last_text' => 'lorem ipsum',
)); ?>
答案 0 :(得分:2)
如果你正在使用WP-PageNavi,有一种特殊的方法可以将它用于自定义查询。例如:
$my_query = new WP_Query(
array(
'tag' => 'foo',
'paged' => get_query_var('paged')
)
);
while ( $my_query->have_posts() ) : $my_query->the_post();
the_title();
// more stuff here
endwhile;
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_postdata(); // avoid errors further down the page
因此,请确保将自定义查询对象传递到wp_pagenavi()
函数调用。
〜编辑〜 以下是文档的链接:http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html
〜编辑2~ 尝试为您的特定应用程序定制的代码:
$args = array(
'post_type' => 'post',
'paged' => $paged,
'post__not_in' => $firstPosts,
'cat' => -23,
);
$loop3 = new WP_Query( $args );
...
wp_pagenavi( array( 'query' => $loop3 ) );
wp_reset_postdata();