WordPress:类别供稿中缺少最新帖子

时间:2020-01-16 22:31:37

标签: php wordpress

我已经设置了一个自定义字段,以拉出指定的类别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' );

它仍然跳过该类别中的最新帖子。

任何见识将不胜感激,谢谢!

2 个答案:

答案 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(); 
?>