WordPressのカレンダーを改造してみるよ!

またブログネタなのですが…!
サイドバーなどに設置するカレンダーには、
日曜日の列は赤字にしたり土曜日の日を青字にしたいという
こだわりがあるんですが、デフォルトなどは列ごとに区別できるclassとかは
さっぱり入ってないので、CSSで指定したりできませんでした。

とりあえずプラグインのカレンダーを色々探しましたが、
ぱっと見そのあたりを満たしてそうなのはなさげだったので、
もうこれは作るか…と。(・ω・)

とりあえずプラグインでもAJAX Calenderが機能的にステキだったのと、
いい感じに弄れそうだったのでこれを改造しちゃうことに。
GPLらしいので公開しちゃうー。

ajax-calendar2/model/calender.php

128行目
– echo “\n\t\t<th abbr=\”$wd\” scope=\”col\” title=\”$wd\”>” . $day_abbrev[$wd] . ‘</th>’;
+ $day_name = substr($wd,0,3);
+ $day_classname = strtolower($day_name);
+ echo “\n\t\t<th abbr=\”$wd\” scope=\”col\” title=\”$wd\” class=\”c_$day_classname\”>” . $day_name . ‘</th>’;

222行目
+ $week_v = calendar_week_mod(date(‘w’, mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);

230行目
– echo ‘<td id=”today”>’;
+ echo ‘<td class=”wd’.$week_v.'” id=”today”>’;

232行目
– echo ‘<td>’;
+ echo ‘<td class=”wd’.$week_v.'”>’;

以上で見出し行に c_sun,c_mon, … , c_sat というclassと、
テーブル内の各列にwd0 ~ wd1というclassが追加されるので、
これらに対してCSSを指定します。

AJAX Calenderの場合は、clalender.cssでデザイン指定しているので、
その中に書くのもよいですし、使用中のテーマファイルのCSSに追加しても良いと思います。

ajax-calendar2/calender.css

.c_sun, .wd0, .wd0 a {
color:#CC0000;
}
.c_sat, .wd6, .wd6 a {
color:#0000CC;
}

平日の色はテーマファイルの色に準拠していると思います。
そちらも変更する場合は、c_mon ~ c_fri と、 wd1~wd5 に指定すればよいです。

うちの場合は他にも色々やってるんですが、
とりあえず列ごとに色を変える方法として紹介しました。

ちなみにほぼ構成は同じなので、WordPressの wp-includes/general-template.php の
カレンダーに関する部分を同じように修正すれば、デフォルトのカレンダーも同様に出来ますが、
あんまりincludesのファイルを弄ると本体アップデートの際に元に戻ってしまうので
出来ればこういうのはプラグインとかテーマファイル内でやりたいですね。