サイドバーの Archives で日付表記を変更する
WordPress のサイドバーに表示されている「Archives」だが、日付の表記が「November 2006」のようになっている。私の推測では November が何月なのか、すぐにわかる人はすくないはずだ。できれば、ここはなんとかしたい。
管理画面の「Options」にあった「Date and Time」の設定を変更してみた。しかし、どこにも反映されている気配がないので(わざわざ PHP のドキュメントを読んだっていうのに…)、ソースコードを調べることにする。
テンプレートを眺めてみると、wp_get_archives
という PHP の関数を呼び出している。で、こいつは引数の解析だけやって、実際の処理は get_archives
関数が行う。
ファイルは wp-includes/template-functions-general.php
の 300 行目あたり。
function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) {
...
if ( 'monthly' == $type ) {
...
if ( $show_post_count ) {
**$text = sprintf('%s %d', $month[zeroise($arcresult->month,2)], $arcresult->year);**
$after = ' ('.$arcresult->posts.')' . $afterafter;
} else {
**$text = sprintf('%s %d', $month[zeroise($arcresult->month,2)], $arcresult->year);**
}
echo get_archives_link($url, $text, $format, $before, $after);
}
}
} elseif ( 'daily' == $type ) {
...
どうやら月別表示のフォーマットは sprintf
で決め打ちらしいので、アドホックなコードにはアドホックな修正で対応する。PHP でプログラミングをしたことはないが、まあ適当に書いたら動くだろう、という魂胆。
function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) {
...
if ( 'monthly' == $type ) {
$url = get_month_link($arcresult->year, $arcresult->month);
**$text = sprintf('%04d/%02d', $arcresult->year, $arcresult->month);**
if ( $show_post_count ) {
$after = ' ('.$arcresult->posts.')' . $afterafter;
}
これで「November 2006」が「2006/11」と表示されるようになった。