类别页面上显示的帖子不正确

时间:2015-03-08 作者:rcadaoas

我使用这个循环来显示我的5篇最新帖子,但即使我选择了一个类别,它仍然会显示所有类别中的5篇最新帖子。

query_posts(\'showposts=5\');
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                <h1><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
                <h4>Posted on <?php the_time(\'F jS, Y\') ?></h4>
                <p><?php the_content(\'Read More..\'); ?></p>
                <br/>
                <hr> 
                <?php endwhile; else: ?>
                <p><?php _e(\'Sorry, no posts matched your criteria.\'); ?></p>
            <?php endif; ?>
如何在加载索引页时显示最新的5篇文章,以及在用户选择类别时从类别中加载最新的5篇文章?

1 个回复
SO网友:Pieter Goosen

首先,永远不要利用query_posts. 它不仅速度慢,可以重新运行查询,而且还可以破坏分页、页面功能和全局$post 一些主题功能和插件依赖于此。如果确实需要运行自定义查询(在这种情况下完全不需要),请使用WP_Queryget_posts.

所有模板文件都应具有相同的基本设置,即循环,如下所示

if ( have_posts() ) {
    while( have_posts() ) {
    the_post();

        // Template tags and HTML mark up

    }
}
无自定义查询,无query_posts. 将根据显示的模板和页面显示正确的POS。如果您位于类别页面上,则仅显示所选类别中的帖子。在代码中,这一行填充了所有内容,应该从所有模板文件中删除:

query_posts(\'showposts=5\');
通过删除此项,所有模板都应该显示它们应该显示的内容。如果需要更改模板页面上的任何内容,请使用pre_get_posts 在执行前更改主查询。

参考Some doubts about the main query

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post