【发布时间】:2015-09-28 14:57:22
【问题描述】:
我在同一页面上有三个循环。
- 第一个循环显示类别“突出显示”的最新帖子。
- 第二个循环按时间顺序显示同一类别的其他帖子。
- 第三个循环显示所有帖子,除了其他循环中的帖子。
一切正常,但在分页 (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',
)); ?>
【问题讨论】:
-
您的代码中的哪个位置包含了寻呼机?
-
嗨!我更新了主要问题中的代码。
标签: php loops pagination wordpress