WordPressには、公開した日付に応じたアーカイブページが存在します。例えば、2023年に公開された記事一覧ページなどが該当しますね。

今回は、この各日付アーカイブリンクのリストを作成できる「wp_get_archives()」の使い方やカスタマイズ方法についてご紹介します。

wp_get_archives()の使い方

「wp_get_archives()」は、日付アーカイブリンクの一覧を取得・表示できるWordPressの関数です。そのまま使うと、以下のようにリスト形式で月別アーカイブのリンクを出力します。

<?php
// 月別アーカイブリンクの一覧を表示
wp_get_archives();

// 出力結果
?>
<li><a href='月別アーカイブのリンク先'>20XX年XX月</a></li>
︙

なお、wp_get_archives()は、引数に配列形式で様々なパラメータを指定できます。使用頻度の高いものから順番にご紹介します。

  • 年別アーカイブを表示する
  • カスタム投稿の日付アーカイブを表示する
  • セレクトボックスで表示する
  • 投稿数のカスタマイズ
  • 主要パラメータを確認する

年別アーカイブを表示する

wp_get_archives()をそのまま利用すると「月別」のアーカイブリストを表示します。こちらを年別に変更する場合は、以下のパラメータを指定してください。

// 年別アーカイブのリストを出力
wp_get_archives( array(
  'type' => 'yearly'
) );

なお、’yearly’を’daily’に変えると日別アーカイブにできます。

カスタム投稿の日付アーカイブを表示する

パラメータを一部変更することでカスタム投稿の日付アーカイブリンクも出力可能です。以下のパラメータ「post_type」を追加します。

// カスタム投稿「news」の月別アーカイブのリストを出力
wp_get_archives( array(
  'type' => 'monthly',
  'post_type' => 'news'
) );

他のカスタム投稿に変更する場合は、上記の「news」を別の投稿名に変更してください。

セレクトボックスで表示する

リスト形式ではなく、セレクトボックスで表示することも可能です。以下のパラメータを追記することで、liタグからoptionタグに変更できます。

// 月別アーカイブのリストをセレクトボックスで表示 
echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;">';
wp_get_archives( array(
  'type' => 'monthly'
  'format' => 'option',
) );
echo '</select>';

selectタグだけでは、セレクトボックスを操作しても何も動作しません。選択したページに遷移させるために、onchange属性を追記するのを忘れないようにしましょう。

投稿数を表示する

各アーカイブの投稿数を表示させる時は、以下のパラメータ「show_post_count」を「true」に設定します。

<?php
// 月別アーカイブのリストを投稿数付きで出力
wp_get_archives( array(
  'type' => 'monthly',
  'show_post_count' => true
) );
// 出力結果(投稿数が12の場合)
?>
<li><a href='月別アーカイブのリンク先'>20XX年XX月</a>&nbsp;(12)</li> ︙/

しかし、このままだと投稿数部分をスタイリングするのが難しいですよね。以下のフィルターを利用することで、投稿数をspanタグで囲み、aタグの中に入れるカスタマイズが可能です。一度functions.phpに記入してみてください。

// &nbsp;(12)を<span>で囲んでaタグの中に入れる
add_filter( 'get_archives_link', function( $link_html ){
  $replaced = preg_replace(
    '/<\/a>\s*(&nbsp;)\((\d+)\)/',
    '<span class="count">$2</span></a>', // ここに差し替えたい内容
    $link_html
  );
  return $replaced == null ? $link_html : $replaced;
} );

主要パラメータを確認する

ここまで紹介したパラメータ以外にも様々なものが存在します。代表的なものを以下にまとめましたので、参考にしてください。

type 取得するアーカイブのタイプ
例)’daily‘, ‘weekly‘, ‘monthly’, ‘yearly’ など
limit リンクの最大表示数
例)5と入力すると5件まで表示
format リンクの取得形式
例)’html’ならliタグ、’options’ならoptionタグ
before 各リンクの先頭に設置できる文字列
例)入力した文字列を<a>の前に表示
after 各リンクの最後に設置できる文字列
例)入力した文字列を</a>の後に表示
show_post_count リンクの横に投稿数を表示するかどうか
例)trueを指定すると投稿数を表示
echo 出力するか取得するか
例)trueで出力、falseで返す
order 昇順か降順か
例)’ASC’なら昇順、’DESC’なら降順
post_type 投稿タイプを指定
例)’post’なら投稿

まとめ

wp_get_archives()を使って日付アーカイブのリストを表示する方法について解説しました。このリストはアーカイブウィジェットでも表示することが可能です。

自作テーマにウィジェットエリアを設置して、任意のウィジェットを表示する方法を以下に記載してますので、ぜひ参考にしてください。