【WordPress】カスタム投稿の年別アーカイブをドロップダウンで追加する方法を解説

WordPress

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.phparchive-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() のパラメータを組み合わせるだけで、カスタム投稿の年別アーカイブをシンプルに実装できます。カスタマイズの幅も広いので、ぜひサイトに合わせて調整してみてください。

コーディングでお困りなら、、、

ご不明な点やコーディングのご依頼はお問い合わせからお気軽にどうぞ。

タイトルとURLをコピーしました