Order posts by years

时间:2011-08-28 作者:gil hamer

我的网站上有帖子(自定义帖子类型)。我想创建一个归档页面,显示按年份排序的归档帖子。e、 g:

2010年*第3条来了*第2条来了*第1条来了

2011年*第3条来了*第2条来了*第1条来了

当然还有帖子的链接。我觉得很简单,但是我在网上找不到任何简单的东西。它还需要手工编码,以便我可以轻松地设置样式。

非常感谢您的帮助Gil

1 个回复
SO网友:Markus

几天前我发现了这个代码片段。不记得在哪里。。。将此代码段复制到存档模板中

<?php
                $year_prev = null;
                $months = $wpdb->get_results(   "SELECT DISTINCT MONTH( post_date ) AS month ,
                YEAR( post_date ) AS year,
                COUNT( id ) as post_count FROM $wpdb->posts
                WHERE post_status = \'publish\' and post_date <= now( )
                and post_type = \'post\'
                GROUP BY month , year
                ORDER BY post_date DESC");
                foreach($months as $month) :
                    $year_current = $month->year;
                    if ($year_current != $year_prev){
                        if ($year_prev != null){?>
                </ul>
                <?php } ?>
                <h3 class="archive"><?php echo $month->year; ?></h3>
                <ul class="archive-list">
                <?php } ?>
                <li>
                <a href="<?php bloginfo(\'url\') ?>/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>">
                <span class="archive-month"><?php echo date("F", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span>
                <span class="archive-count"><?php echo $month->post_count; ?></span>
                </a>
                </li>
                <?php $year_prev = $year_current;
                endforeach; ?>
                </ul>

结束