Hatena::ブログ(Diary)

hello, world.

» はてな記法

2010-03-13

[] 月別アーカイブ表示に年区切りを入れる。

wp_get_archives();で表示される

・2010年3月

・2009年6月

というのを


2010年

・3月

2009年

・6月

みたいな表示にする。

2010年3月等と表示される日本語環境のみ、March 2010とか表示される英語環境だと要修正。

<h3>ARCHIVES</h3>
<div class="navi-archives">
<?php 
//1. 年を抽出して配列に格納
$archives_year = strip_tags(wp_get_archives('type=yearly&show_count=0&format=custom&echo=0')); //wp_get_archivesに対してタグを除去して年数のみ抽出。
$archives_year_array = split("\n",$archives_year); //年数ごとに配列$archives_year_arrayに格納
array_pop($archives_year_array);//配列内の最後に空の配列ができてるので削除。
//$archives_year_array = array_merge(array_diff($archives_year_array, array(""))); で空の配列削除してもOKだった。

//2. アーカイブ一覧を取得して配列に格納
$archives = wp_get_archives('type=monthly&show_post_count=1&use_desc_for_title=0&echo=0'); //月別アーカイブを取得。
$archives_array = split("\n",$archives); //同様に改行ごとに配列に格納。

foreach ($archives_year_array as $year_value){ //1で抽出した年数分繰り返し
	echo "<h4>".ltrim($year_value)."</h4>\n"; //<h4>で年を表示
	echo "<ul>\n";
	
	foreach ( $archives_array as $archives_value) { //月別アーカイブ数分繰り返し
		
		if ( intval(strip_tags($archives_value)) == intval($year_value) ) { //1で取得した年と、2の各月別アーカイブの文字列を比較
			echo  str_replace(intval($year_value)."","",ltrim($archives_value))."\n";//2の月別アーカイブの各行のhtmlからYYYY年部分を除去して表示。
			array_shift($archives_array); //表示した配列を削除。なんとなくこのほうが次のforeachまわるとき処理早くなるかなと思って。
		}
		
	}
	echo "</ul>\n";	
}

?>
</div>

suusuu 2011/07/05 17:52 はじめまして。suuと申します!こちらの記事を参考にさせて頂きました。おかげで大変助かりました、ありがとうございます!
そして、一点質問させてください。上記のように記述すると、月の表示部分が【7月 (1)】みたいになってしまうのです。(投稿数)←これを消すにはどのようにしたらよろしいでしょうか? お手数ですが、ご回答頂けたら嬉しいです! 失礼します!

suusuu 2011/07/05 17:53 はじめまして。suuと申します!こちらの記事を参考にさせて頂きました。おかげで大変助かりました、ありがとうございます!
そして、一点質問させてください。上記のように記述すると、月の表示部分が【7月 (1)】みたいになってしまうのです。(投稿数)←これを消すにはどのようにしたらよろしいでしょうか? お手数ですが、ご回答頂けたら嬉しいです! 失礼します!

fujifuji 2011/07/05 18:01 月別アーカイブを取得してる部分の、wp_get_archives内のshow_post_count=1を0にしてもらえれば消えると思いますよ〜

suusuu 2011/07/05 18:07 すみません!1を0で解決できました!お騒がせ致しました!

kaduakikaduaki 2011/10/01 23:28 WPの日付表示を英語表示にしたら、どうしても私の力では処理できない部分が出てきて、途方に暮れているところでこのサイトにたどり着きました。アーカイブ部分がとてもすっきりして助かりました。

bahnebahne 2012/01/17 17:49 はじめまして。bahneと申します。
年区切りにできるアーカイブ表記を探していて、とても重宝させて頂いています!
ありがとうございます!

1点教えて頂きたい点があるのですが、
「年」の部分に「年」のアーカイブへのリンクをはりたいのですが、
それは可能でしょうか?よろしければ教えてください。
どうぞ、よろしくお願いします。

なべなべ 2015/01/17 11:36 たすかりました!ありがとうございました!

ばにばに 2016/03/13 14:48 非常に助かりました!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fujimori1981/20100313/1268419807
#PAGETOP