年度別アーカイブリスト

「・2014年度・2013年度・・・」のリンクの表示ですね。
最初に「functions.php」に下記を追加して。

functions.php

                function get_archives_by_fiscal_year( $args = '' ) {
                    global $wpdb, $wp_locale;
                    $defaults = array (
                        'post_type' => 'post',
                        'limit' => '',
                        'format' => 'html',
                        'before' => '',
                        'after' => '',
                        'show_post_count' => false,
                        'echo' => 1
                    );
                    $r = wp_parse_args( $args, $defaults );
                    extract ( $r, EXTR_SKIP );
                    if ( '' != $limit ) {
                        $limit = absint( $limit );
                        $limit = ' LIMIT ' . $limit;
                    }
                    $arcresults = (array) $wpdb->get_results(
                        "SELECT YEAR(ADDDATE(post_date, INTERVAL -3 MONTH)) AS `year`, COUNT(ID) AS `posts`
                        FROM $wpdb->posts
                        WHERE post_type = '$post_type' AND post_status = 'publish'
                        GROUP BY YEAR(ADDDATE(post_date, INTERVAL -3 MONTH))
                        ORDER BY post_date DESC
                        $limit"
                    );
                    return $arcresults;
                }
                

あとは「sidebar.php」とか表示したい部分に下記を追加します。

sidebar.php

                <ul>
                <?php
                $archives = get_archives_by_fiscal_year();
                foreach($archives as $archive):
                ?>
                <li><a href="<?php echo home_url() ?>/date/<?php echo esc_html($archive->year) ?>"><?php echo esc_html($archive->year) ?>年度</a></li>
                <?php
                endforeach;
                ?>
                </ul>
                

この部分は下記サイトを参考(というかそのままです)にさせていただきました。

[WordPress] 年度別(4月から始まる)アーカイブリストを表示する | 制作メモ | 560DESIGNS

年度別記事一覧

先ほどのアーカイブリストのリンク先は「/date/2013」という感じになっいて、アクセスすると2013年4月から2014年3月までの投稿を表示するようにしてみます。
とりあえず「archive.php」に下記を記述します。

archive.php

                <?php
                $year = get_query_var('year');
                $args = array(
                'post_status' => 'publish'
                );
                if ($year) {
                $start_date = $year.'/4/1';
                $end_date = ($year+1).'/3/31 23:59:59';
                $args += array('date_query' => array (
                'compare' => 'BETWEEN',
                'after' => $start_date,
                'before' => $end_date,
                'inclusive' => true
                ));
                }
                $query = new WP_Query($args);
                echo '<table>';
                if ($query->have_posts()) : while ($query->have_posts() ) : $query->the_post(); ?>
                <tr>
                <th><span><?php echo get_the_date('Y.m.d'); ?></span></th>
                <td><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></td>
                </tr>
                <?php endwhile; endif;
                echo '</table>';
                wp_reset_query();
                ?>
                

これで基本的には表示できるのですが、「archive.php」で作成すると問題があります。
たとえば「2012年2月」は「/date/2011」に表示されますが、「2011年」の記事がない場合、本来の年の処理が優先されて「404.php」や「index.php」などが優先して読み込まれます。

フックとかを使えば対応できそうな気がしますが、独立したPHPファイルを作成して、$yearの部分をURLから引っ張ってきた方が早いかもしれません。

                $year = if (isset($_GET['year'])) intval($_GET['year']);
                

リンク部分

                <li><a href="<?php echo home_url() ?>/hoge.php?year=<?php echo esc_html($archive->year) ?>"><?php echo esc_html($archive->year) ?>年度</a></li>