我已经设置了一个自定义字段,以拉出指定的类别ID,以便使用WP_Query在页面的侧边栏上显示。它会按正确的类别拉出帖子,但会跳过最新的帖子。这是代码片段:
<?php
$catID = get_field ( 'category_id_posts' );
$catquery = new WP_Query( 'cat='. $catID .'&posts_per_page=5' );
?>
<?php if($catquery->have_posts()) : $catquery->the_post(); ?>
<div id="recent-posts-2">
<h3 class="widget-title">Recent Posts</h3>
<ul class="nav flex-column">
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
<li class="nav-item">
<a class="nav-link" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
</div>
<?php
endif;
wp_reset_postdata(); ?>
即使我简化了WP_Query并删除了这样的变量:
$catquery = new WP_Query( 'cat=7&posts_per_page=5' );
它仍然跳过该类别中的最新帖子。
任何见识将不胜感激,谢谢!
答案 0 :(得分:2)
您没有收到第一篇文章,因为您跳过了它。
检查此行:
<?php if($catquery->have_posts()) : $catquery->the_post(); ?>
您检查查询中是否有帖子,如果是,则将获取第一个。但是,您不打印那个。比你在打...
<?php while($catquery->have_posts()) : $catquery->the_post(); ?>
...再次。这将给您第二篇文章,而您跳过了第一篇。 直接解析第一个或删除第一个抓取。
答案 1 :(得分:2)
例如,您需要检查$ catquery-> have_posts()-
<?php if ( $catquery->have_posts() ) : ?>
<?php while ( $catquery->have_posts() ) : $catquery->the_post(); ?>
..
..
..
..
<?php endwhile; ?>
<?php endif;
wp_reset_postdata();
?>