按发布年份分类的帖子存档列表(多年)

时间:2012-12-11 作者:t-jam

我有一个显示所有博客帖子(在特定类别中)的归档页面。随着帖子数量的不断增加,我想按发布年份将其分开。例如(简化),我想要以下内容:

2012年,我正在测试这个系统,将我最早的帖子的发布日期改为2011年年中。目前,该结构似乎基本正常,但所有帖子都将在2012年发布,2011年则没有,尽管最早的帖子发布日期设定为2011年。为了举例说明,我得到了以下结果:

2012年发布(2011年发布)

我正在使用下面的代码(为了简化,删除了一些额外的内容,但这并不影响结果)。有人知道为什么老帖子会在2012年出现,而不是在2011年出现吗<ul>? 谢谢你的帮助。

<?php global $query_string; query_posts($query_string . \'&posts_per_page=-1\'); // Show all posts ?>
<?php if (have_posts() {
if (is_category(\'210\')) { ?>
<div class="archive-posts-box">
    <?php $firstyear = \'2011\';
    $currentyear = date(\'Y\');
    $postyear = get_the_time(\'Y\', $post->ID);
    for ($i = $currentyear; $i >= $firstyear; $i--) { ?>
            <h4><?php echo $i ?></h4>
            <ul class="archive-posts">
            <?php while (have_posts() && $postyear == $i) {
                the_post(); ?>
                <li><span class="archive-post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span><span class="archive-post-date"><?php the_time(get_option(\'date_format\')); ?></span></li>
            <?php } // end while ?>
            </ul>
        <?php } // end for ?>        
</div><!-- .archive-posts-box -->
<?php } // end if (category)
} // end if (have_posts)
wp_reset_query() ?>

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我最初的印象是,我相信现在发生的事情是循环直到the_post 让您的&& $postyear == $i check实际上是查看以前的帖子,而不是当前的帖子。在循环递增之后,您必须重新组织此项以获得该检查the_post.

也就是说,我不认为我在更深层次上相信这种逻辑。您正在设置$postyear 在封闭循环之前($postyear = get_the_time(\'Y\', $post->ID);) 所以它甚至不受the_post. 这让我担心。

我知道你不想做这么多的修改,但为了它的价值,我想你需要一些更像:

 $oldyear = $postyear = get_the_time(\'Y\', $post->ID);?>
 <h4><?php echo $postyear; ?></h4>
    <ul class="archive-posts"><?php
    while (have_posts()) {
      the_post();
      $postyear = get_the_time(\'Y\', $post->ID);
      if ($oldyear != $postyear) {
    $oldyear = $postyear; ?>
    </ul><h4><?php echo $postyear; ?></h4><ul class="archive-posts">
    <?php
      } ?>
    <li><span class="archive-post-title">
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?>
    </a></span><span class="archive-post-date"><?php the_time(get_option(\'date_format\')); ?></span></li><?php
    }
    echo \'</ul>\';
?>
我要走了,我要走了。它几乎没有经过测试,但它应该给你一个想法。

结束

相关推荐

更改wp-config.php破坏了站点

我添加了行define( \'WP_CONTENT_DIR\', $_SERVER[\'DOCUMENT_ROOT\'] . \'/blog/wp-content\' ); 和define( \'WP_CONTENT_URL\', \'example/blog/wp-content\';); 在我的wp配置中。php,然后我的网站崩溃了。甚至后端的一些小部件也不再显示。我立即从wp-config.php 然而,这并没有改变任何事情。请帮忙