【WordPress】投稿日時をベースに年別の記事一覧を作る

2018年9月24日

年別の記事一覧を作りたい

つまり

2018年

  • タイトル
  • タイトル
  • タイトル

2017年

  • タイトル
  • タイトル
  • タイトル

というもの。

なぜか意外とめんどう

試行錯誤の上、ついに動いたコードは下記のような感じ。

        <?php
        function archiveFunc($year)
        {
            $newslist = new WP_Query(array(
                'post_type' => 'report',
                'posts_per_page' => -1,
                'year' => $year
            ));
            ?>
            <h3><?php echo $year; ?>年</h3>
            <ul>
            <?php
            if ($newslist->have_posts()):
                while ($newslist->have_posts()):
                    $newslist->the_post();
                    ?>

                <li>
                    <?php the_title(); ?>
                </li>
                <?php
                endwhile;
            endif;
            wp_reset_postdata();
            ?>
            </ul>
            <?php
        }
        $thisyear = date('Y');
        for ($year = $thisyear; $year >= 2017; $year--) {
            archiveFunc($year);//2017以降のみ表示
        }
        ?>

○○年という見出しを正しく表示させるのがどうやら意外と難しい様子。

$thisyearのところで一番古い年を指定してあげないと、とても残念な結果になる。
一番古い記事の年数を自動取得する方法も無くはないが、SQLらしいコードを書かないといけないので今回は却下。

公開時点で入力したいデータより古い年は、公開後にいれたりしないと信じられるときでないと使いづらそう。

参考

WordPressのアーカイブページで投稿を年度別に一覧表示したかった。

 

でも、結局最終的には投稿年はやめて、カスタムタクソノミー使ってやることにしました。

【wordpress】wordpressのカスタムタクソノミーを使いこなしたい!