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

  • URLをコピーしました!
目次

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

つまり

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のカスタムタクソノミーを使いこなしたい! wordpressのカスタム投稿タイプ専用のカテゴリやタグってどうやってつくるの? toolsetプラグインでカスタム投稿タイプをサクサク作成して、 ページに表示できるように...
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次