WordPressで年別アーカイブのリストを表示する方法

WordPressで年別アーカイブのリストを表示する方法

WordPressで年別アーカイブのリストを表示する方法
  • シェアしてね♪
  • このエントリーをはてなブックマークに追加
  • follow us in feedly


  • 一式98,000円~の格安プランをご用意!Web制作お任せください!
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

WordPressには、デフォルトで「アーカイブ」というウィジェットが用意されていますが、アーカイブウィジェットでは月別のアーカイブが表示されます。

更新頻度がそんなに高くなく、月別ではなく年別でアーカイブのリストを表示したいこともあるかと思います。そんな時のために、年別アーカイブのリストを表示させる方法をご紹介したいと思います。

スポンサードリンク

WordPressで年別アーカイブのリストを表示する方法

まず、functions.phpに以下を追加します。

functions.php

function get_archives_by_year( $args = '' ) {
  global $wpdb, $wp_locale;
  $defaults = array (
    'post_type' => 'post', //投稿タイプ
    'limit' => '',
    'format' => 'html',
    'before' => '',
    'after' => '',
    'show_post_count' => false,
    'echo' => 1
  );
  $parse = wp_parse_args( $args, $defaults );
  extract ( $parse, 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;
}

「post_type」で表示したい投稿タイプを指定します。

年別アーカイブを表示させたい箇所に、以下コードを記述します。


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

「/archives/date/」のところは、パーマリンク設定に合わせて変更してください。上記は、パーマリンク設定を「/archives/%post_id%」にしている場合の例です。

あとがき

あまり需要ないかもですが、標準の月別アーカイブではなく年別のアーカイブリストを表示させたい場合は、ぜひ参考にしてください。

この記事が気に入ったら
いいね!してね♪

Twitter で
スポンサードリンク

関連記事

コメントを残す

メールアドレスが公開されることはありません。