1. ホーム
  2. WordPress

【WordPress】wp_get_archives の使い方|月別・年別アーカイブ一覧を表示する方法

Share

ブログのサイドバーでよく見かける「2026年7月」「2026年6月」といった月別のリンク一覧。これは投稿の月別アーカイブへのリンクで、WordPress では wp_get_archives() 関数を使えば簡単に表示できます。この記事では、wp_get_archives() の基本的な使い方から、月別・年別・日別といった表示単位の切り替え、投稿数の表示、戻り値を受け取る方法まで、実際のコード例とともに解説します。

wp_get_archives は投稿の日付アーカイブ一覧を出力する

wp_get_archives() は、投稿を日付ごとにまとめた「アーカイブ」へのリンク一覧を作る関数です。アーカイブとは、特定の年・月・日に投稿された記事をまとめて表示するページのことです。この関数を呼ぶだけで、リンク付きのリスト(<li> 要素の並び)が自動で出力されます。

まずは最小のコードです。引数を省略すると、月別のアーカイブ一覧が表示されます。

sidebar.php
<ul>
    <?php wp_get_archives(); ?>
</ul>

この関数は <li> 要素だけを出力するため、自分で <ul> タグで囲む必要があります。囲まずに使うとリストの構造が崩れるので注意してください。出力される各行は「2026年7月」のようなテキストと、その月のアーカイブページへのリンクになります。

引数で表示をカスタマイズする

wp_get_archives() には、配列の形で引数を渡して表示を細かく調整できます。よく使う引数をまとめました。

引数説明
type集計単位。monthly(月別・初期値)/ yearly(年別)/ daily(日別)/ weekly(週別)/ postbypost(記事ごと)
limit表示する件数の上限。初期値は無制限
show_post_counttrue でアーカイブごとの投稿数を表示(初期値 false
format出力形式。htmlli・初期値)/ option(プルダウン)/ custom など
order並び順。DESC(新しい順・初期値)/ ASC(古い順)
echotrue で出力、false で文字列を返す(初期値 true

たとえば、年別の一覧に投稿数を付けて表示するなら次のように書きます。

sidebar.php
<ul>
    <?php
    wp_get_archives( array(
        'type'            => 'yearly',     // 年別で表示
        'show_post_count' => true,         // 投稿数を表示
    ) );
    ?>
</ul>

show_post_counttrue にすると、「2026年 (42)」のように各アーカイブの投稿数が末尾に付きます。読者にとって、どの時期に記事が多いかが一目で分かるようになります。

プルダウン(セレクトボックス)で表示する

アーカイブが多くて縦に長くなる場合は、formatoption にするとプルダウンメニューとして出力できます。option 形式では <option> 要素が並ぶので、<select> で囲んで使います。

sidebar.php
<select onchange="if(this.value) location.href=this.value;">
    <option value="">月を選択</option>
    <?php
    wp_get_archives( array(
        'type'   => 'monthly',
        'format' => 'option',
    ) );
    ?>
</select>

<option> の値にはアーカイブページの URL が入るため、選択したときにそのページへ移動する簡単なスクリプトを添えれば、省スペースなアーカイブ選択メニューになります。

出力せず変数で受け取る

初期状態ではその場に HTML が出力されますが、echofalse にすると、出力せずに文字列として受け取れます。出力前に加工したいときや、条件によって表示を分けたいときに便利です。

sidebar.php
<?php
$archives = wp_get_archives( array(
    'type' => 'monthly',
    'echo' => false,   // 出力せず文字列で返す
) );

// 中身があるときだけ見出し付きで表示する
if ( ! empty( $archives ) ) {
    echo '<h3>月別アーカイブ</h3>';
    echo '<ul>' . $archives . '</ul>';
}
?>

このように echo => false で受け取れば、アーカイブが存在するときだけ見出しやリストを出す、といった制御ができます。

アーカイブが表示されないとき

公開済みの投稿がない

wp_get_archives() は、公開されている投稿がある年月だけを一覧にします。下書きや非公開の投稿しかない月は表示されません。テスト環境で何も出ないときは、まず公開済みの投稿が存在するかを確認してください。

対象が「投稿」に限られる

この関数が集計するのは、標準では通常の「投稿(post)」タイプです。固定ページや、独自に作ったカスタム投稿タイプは初期状態では対象になりません。カスタム投稿タイプのアーカイブを出したい場合は、post_type 引数にその投稿タイプ名を指定します。目的の投稿タイプが対象になっているかを見直しましょう。

まとめ

wp_get_archives() は、投稿の日付アーカイブへのリンク一覧を手軽に出力できる関数です。type で月別・年別・日別などの単位を切り替え、show_post_count で投稿数を添え、format でリストとプルダウンを選べます。出力は <li><option> 単位なので、必ず <ul><select> で囲んで使うのがポイントです。echo => false で文字列として受け取れば、表示を柔軟に制御できます。サイドバーやフッターのアーカイブ一覧づくりに役立ててください。

参考ページ