はじめに
「アーカイブ」ウィジェットは、デフォルトで年月ごとに表示されます。
しかし、年単位で表示したい場合や、投稿がある全ての年ではなく最新の5年分だけを表示したい場合もあります。
この記事では、この方法について説明します。
最新の5年分のみ表示する方法
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
/**
* アーカイブウィジェットの表示形式を変更
*
* @param array $args ウィジェットに渡される既定の引数
* @return array カスタマイズ後の引数
*/
if (!function_exists('custom_archives_args')) :
function custom_archives_args($args) {
$args['type'] = 'yearly'; // 年単位で表示
$args['limit'] = 5; // 最新5年分を表示
return $args;
}
endif;
// アーカイブウィジェットのクエリを変更
add_filter('widget_archives_args', 'custom_archives_args');
add_filter('widget_archives_dropdown_args', 'custom_archives_args');
現在の年のみ「アーカイブ」ウィジェットを年月表示する方法
「アーカイブ」ウィジェットで現在の年の投稿のみを年月単位で表示します。
完成イメージ

実装手順
以下のコードをfunctions.phpに追加します。
add_filter('getarchives_where', function ($where) {
// 現在の年を取得
$current_year = date('Y');
// 今年の投稿のみに絞り込み
$where .= " AND YEAR(post_date) = '$current_year'";
return $where;
});
さいごに
今回紹介した方法を使えば、「アーカイブ」ウィジェットを年別表示に変更し、さらに現在の年だけを表示するカスタマイズが簡単に実現できます。
今回ご紹介したのは一例にすぎませんが、フックを活用することで、アイデア次第でさまざまなカスタマイズが可能です。

