最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - archive per year with monthly

programmeradmin6浏览0评论

I have an archive that shows all the post on monthly now i want is to group them per year like

2015 
 Jan
 Feb
 March
2014
 April
 May

I'm using this code.

<?php wp_get_archives( array( 'type' => 'monthly' ) ); ?>

This displays all the archive monthly from the beginning. i tried to add a monthly and yearly but they are on a separate group...

I have an archive that shows all the post on monthly now i want is to group them per year like

2015 
 Jan
 Feb
 March
2014
 April
 May

I'm using this code.

<?php wp_get_archives( array( 'type' => 'monthly' ) ); ?>

This displays all the archive monthly from the beginning. i tried to add a monthly and yearly but they are on a separate group...

Share Improve this question asked Jun 16, 2015 at 2:38 MIkeMIke 8311 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 1

To display monthly archives arranged by year, you can use this code. It checks through each month if WordPress have any post in that month and create archive.

<?php
    global $wpdb;
    $limit = 0;
    $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 ) { ?>
            <?php } ?>
            <h3><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/"><?php echo $month->year; ?></a></h3>
        <?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_i18n("F", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span></a></li>
        <?php $year_prev = $year_current;
        if( ++$limit >= 18 ) { break; }
    endforeach;
?>
<?php
    global $wpdb;
    $limit = 0;
    $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 = 'newses' 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 ) { ?>
            <?php } ?>
            <dt><i class="fa fa-fw fa-plus-square-o" aria-hidden="true"></i><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/"><?php echo $month->year; ?></a></dt>
        <?php } ?>
        <dd class="post_month"><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_i18n("F", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span></a></dd>
        <?php $year_prev = $year_current;
        if( ++$limit >= 18 ) { break; }
    endforeach;
?>

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论