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> (12)</li> ︙/
しかし、このままだと投稿数部分をスタイリングするのが難しいですよね。以下のフィルターを利用することで、投稿数をspanタグで囲み、aタグの中に入れるカスタマイズが可能です。一度functions.phpに記入してみてください。
// (12)を<span>で囲んでaタグの中に入れる
add_filter( 'get_archives_link', function( $link_html ){
$replaced = preg_replace(
'/<\/a>\s*( )\((\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()を使って日付アーカイブのリストを表示する方法について解説しました。このリストはアーカイブウィジェットでも表示することが可能です。
自作テーマにウィジェットエリアを設置して、任意のウィジェットを表示する方法を以下に記載してますので、ぜひ参考にしてください。
コメント