WordPress 月別アーカイブの年月表示をカスタマイズする方法

WordPress 月別アーカイブの年月表示をカスタマイズする方法

WordPress で月別アーカイブの年表記を通常の「2017年1月」から「2017.1」や「2017.01」にカスタマイズする方法を紹介します。
例えば、サイト内で日付の表記を統一したいときなどに便利な方法です。

  1. 月の表記を「2017.1」にして表示
  2. 月の表記を「2017.01」と二桁にして表示
  3. アーカイブページのタイトルを「2017.01」にする

月の表記を「2017.1」にして表示

通常 wp_get_archives でアーカイブリストを表示する場合は年月の表示が「2017年1月」と表示されます。
この表示を「2017.1」にする場合はフックフィルターを使用します。
次のコードを functions.php に追加してください。

/* 【出力カスタマイズ】 wp_get_archives の年表記を置き換える */
function my_archives_link($html){
$html = str_replace('年','.',$html);
$html = str_replace('月','',$html);
return $html;
}
add_filter('get_archives_link', 'my_archives_link');

このコードの場合は年に当たる部分を「.(ドット)」、月に当たる部分を「(空白)」にすることで「2017.1」にします。

月の表記を「2017.01」と二桁にして表示

月の表記を「2017.01」と二桁にして表示する方法を紹介します。
次のコードを functions.php に追加してください。

/* 【出力カスタマイズ】wp_get_archives の年表記を置き換える */
add_filter('gettext', 'my_gettext', 20, 3);
function my_gettext($translated_text, $original_text, $domain) {
if ($original_text == '%1$s %2$d') {
$translated_text = '%2$s.%1$02d';
}
return $translated_text;
}

年に当たる部分を「.(ドット)」月に当たる部分を「 (空白)」月の表示を sprintf 関数を使い「2017.01」と二桁に変更して表示します。

アーカイブページのタイトルを「2017.01」にする

アーカイブページのタイトルを「2017.01」にする合は sprintf 関数を使って月の値を二桁にします。
次のコードを archive.php に追加してください。

<?php
$tit_monthnum = get_query_var('monthnum'); // 月の値を取り出す
echo get_query_var('year').'.'. sprintf("%02d",$tit_monthnum); // 値を二桁に変更
?>

一度 get_query_var('monthnum') で月の値を取り出して値を二桁にして表示します。

sprintf について

sprintf 関数を使うことで、フォーマット文字列(format)に基づき生成された文字列を返すことができます。
次のコードは、一桁の数字を二桁表記にする方法です。

$num = 1; // 数字が「1」の場合
echo sprintf("%02d",$num); // 数字は「01」と表示されます

まとめ

WordPress で月別アーカイブの年表記を通常の「2017年1月」から「2017.1」や「2017.01」にカスタマイズする方法を紹介しました。