WordPressでお知らせや実績などのカスタム投稿を使っていると「年別でアーカイブを絞り込みたい」という場面がよくあります。この記事では wp_get_archives() を使って、ドロップダウン形式の年別アーカイブを実装する方法を紹介します。
実装コード
<select name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value="<?php echo esc_url( home_url() ); ?>/news">すべての年</option>
<?php
wp_get_archives( 'type=yearly&format=option&post_type=news&after=年' );
?>
</select>archive.php や archive-news.php などに設置して使います。今回は post_type=news のカスタム投稿を想定しています。通常の投稿に使う場合は post_type=post に変更してください。
コード解説
wp_get_archives() でアーカイブリンクを取得して、<select> タグ内に <option> として展開するイメージです。「すべての年」のオプションを先に追加しておくことで、一覧ページにいつでも戻れる導線も作っています。
使用パラメータの解説
今回使用しているパラメータはこちらです。
| パラメータ | 意味 |
|---|---|
| type | アーカイブの種別(yearly / monthly / daily など) |
| format | 出力形式(option / html / link など) |
| post_type | 対象の投稿タイプ |
| after | リンク名の後に付ける文字列 |
その他にもよく使うパラメータを紹介します。
| パラメータ | 意味 |
|---|---|
| limit | 表示件数 |
| before | リンク名の前に付ける文字列 |
| show_post_count | 投稿件数を表示するか(true / false) |
| order | 並び順(DESC / ASC) |
躓きやすいポイント
「すべての年」のリンク先を変え忘れる
home_url() . '/news' の部分はカスタム投稿のアーカイブURLに合わせて変更が必要です。投稿タイプのスラッグと一致しているか確認してください。
ドロップダウンが動かない
onchange でページ遷移させているためJavaScriptが必要です。テーマによってはJSが無効になっている場合があるので、ブラウザのコンソールでエラーが出ていないか確認してみてください。
まとめ
wp_get_archives() のパラメータを組み合わせるだけで、カスタム投稿の年別アーカイブをシンプルに実装できます。カスタマイズの幅も広いので、ぜひサイトに合わせて調整してみてください。
コーディングでお困りなら、、、
ご不明な点やコーディングのご依頼はお問い合わせからお気軽にどうぞ。

