プラグイン作者です。
なるほど、携帯電話だと、こういう2段階遷移の方がいいですね。年別アーカイブを作るだけならば、さほど難しくなくて、Default テーマの menu_months.php を複製して menu_years.php と命名し、ks_get_archives()
の引数にある monthly
を yearly
に変えるだけです。
しかし、こうすると、年別メニューをクリックすると、いきなり2008年の投稿タイトル一覧が出てしまい、2008年の各月メニューにはなりません。
したがって、次の2つの改造が必要です。
(1) get_year_link()
にフィルターする。
上記要領で作った menu_years.php の1行目、<?php
と ks_header();
の間に以下の行を入れてください。
function ks_yearly_menu($link, $year) {
return ks_blogurl(false) . '?menu=months&y=' . intval($year);
}
add_filter('year_link', 'ks_yearly_menu', 10, 2);
(以下、ks_header();
が続く)
(2) menu_months.php の改造
menu_months.php の方で、年が指定されていたらその年の投稿だけ表示するよう制限をあけます。
menu_months.php の1行目、<?php
と ks_header();
の間に以下の行を入れてください。
function ks_months_a_year_menu($where, $r) {
if ($r['type'] == 'monthly' && isset($_GET['y']) && $_GET['y'] > 0) {
$where .= sprintf(' AND YEAR(post_date) = %d', intval($_GET['y']));
}
return $where;
}
add_filter('getarchives_where', 'ks_months_a_year_menu', 10, 2);
あと、footer.php を改造して、?menu=months
にリンクしている部分を ?menu=years
に変更すれば OK です。
この機能はいいと思いますので、テストが間に合えば 1.61 正式版に入れてみたいと思います。
お礼が遅くなりました、おかげさまで簡単に
望み通りの表示が出来ました。
携帯から、かなりスッキリと見やすくなりました
1.7のリリースも楽しみにして居ます
ありがとうございました!
そちらでも動いたようで何よりです。
この改造ですが、WordPress 2.0, 2.1 では動作しないため、WordPress 2.2 以降専用となります。yearly 指定が 2.1 から導入で、getarchives_where フィルターが 2.2 からの導入となっているためです。
1.7のリリースも楽しみにして居ます
すでに 1.61 → 1.70 への改名を察知されているとは!! まだ細かい調整をしているので、今週土曜日ぐらいまでかかってしまうかもしれません。