「月別アーカイブ表示に年区切りを入れる。」で紹介されている方法では英語環境上で動作しないとのことでしたので、英語環境でも動作できるように処理を変更してみました。
ついでにforeachで回す回数も少なくなるようにしています。
------------------------------------------------------------------
ついでにforeachで回す回数も少なくなるようにしています。
------------------------------------------------------------------
<?php
$archives = wp_get_archives('type=monthly&show_post_count=1&format=custom&use_desc_for_title=0&echo=0');
$archives_array = split("\n", str_replace("\t", '', trim($archives, "\n")));
$years = array();
if (!empty($archives_array)) {
foreach ($archives_array as $archives_value) {
$string = preg_replace('/ \([0-9,]+\)/', '', strip_tags($archives_value));
$timestamp = strtotime(str_replace(array('年', '月'), array('-', ''), $string));
$year = date('Y', $timestamp);
if (!in_array($year, $years)) {
$years[] = $year;
echo "<h4>".$year."</h4>\n"; //英語表記
//echo "<h4>".$year."年</h4>\n"; //日本語表記
echo "<ul>\n";
}
echo "<li>".str_replace($string, date('F', $timestamp), $archives_value)."</li>\n"; //英語表記
//echo "<li>".str_replace($string, date('n月', $timestamp), $archives_value)."</li>\n"; //日本語表記
}
echo "</ul>\n";
}
?>
------------------------------------------------------------------
「2013-1」でも「January 2013」でもstrtotimeを通せば2013年1月1日のタイムスタンプが得られる事を利用した力技プログラムです(笑)
show_post_countが1でも0でも動くように考慮してあります。
echoの部分をうにうに変更すれば自分の好きなフォーマットで出力できるので、ご自由に変更してください。
以上です。
「2013-1」でも「January 2013」でもstrtotimeを通せば2013年1月1日のタイムスタンプが得られる事を利用した力技プログラムです(笑)
show_post_countが1でも0でも動くように考慮してあります。
echoの部分をうにうに変更すれば自分の好きなフォーマットで出力できるので、ご自由に変更してください。
以上です。