特定カテゴリーの年別投稿一覧(今度こそ解決!)

2022年1月13日

年別投稿一覧を年毎に括って表示したかったのだが、これがなかなかうまく行かず、紆余曲折を経てたどり着いた結果が以下。

つべこべ言わずに本当の正解を最初に掲載しておく。
作家さんサイトのartページの年別サムネイル一覧(アコーディオン)。

<section class="arts">
  <?php
  function archiveFunc($year)
  {
    $args = array(
      'category_name' => 'artwork',
      'posts_per_page' => -1,
      'year' => $year
    );
      $post_query = new WP_Query($args);
      if ($post_query -> have_posts()):
?>
<div class="works-box">
  <div class="works-box-header">
<?php echo $year; ?>
<div class="arrows">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 16a1 1 0 0 1-.64-.23l-6-5a1 1 0 1 1 1.28-1.54L12 13.71l5.36-4.32a1 1 0 0 1 1.41.15 1 1 0 0 1-.14 1.46l-6 4.83A1 1 0 0 1 12 16z"/></svg>
</div>
</div>
<div class="accordion_inner">
  <div class="panel">
<?php while($post_query -> have_posts()) : $post_query -> the_post(); ?>
  <div class="panel-inner">
<a href="<?php the_permalink(); ?>">
  <div class="art-item">
<?php if( has_post_thumbnail() ): ?>
         <?php echo get_the_post_thumbnail(); ?>
         <?php else: ?>
              <img src="<?php echo catch_that_image(); ?>" />
              <?php endif; ?>
              <div class="mask">
                <div class="caption">
            <?php the_title();?></div>
        </div>
      </div>
</a>
</div>
<?php endwhile; ?>
</div>
</div>
</div>
<?php   endif;
        wp_reset_query();
}

    $thisyear = date('Y'); // 現在の西暦年を取得

    for ($year=$thisyear; $year >= 2019; $year--) {
        // $year >= で指定した年から現在の年までの記事を出力

        archiveFunc($year); //関数の読み込み
    }
?>
</section>

ほぼ完了していたのだが、記事の読み込みとループ箇所を間違えていた。

if ($post_query -> have_posts()):

の箇所と

while($post_query -> have_posts()) : $post_query -> the_post();

の箇所、あとはループを終了させる箇所と全て終わらせる箇所。
そもそもarchiveFunkという関数をfor文で2019年以降分繰り返しているので、1年分をしっかり出力することに注力すれば良かったのだ!

PAGE TOP