WordPressのプラグインでDayOfYearを表示するものを作成してみました
プラグイン作成準備
最初にディレクトリを作成します。今回は自分用に作成するので特に名前も気にしていないのですが、公開する場合には名前のかぶらないものにすることをお勧めします。
$ mkdir utbt_doycalendar
このディレクトリにplugin.phpファイルを作成しヘッダを作成します。
この辺りはお決まりですので、このあたりのサイトに書かれている通りにします
こんな感じで十分でしょうか?
ショートコード対応
今回はWordpressのプラグインとしてショートコードをページに記入レバ表示できるような仕様にします。
また、ページには1年間分のカレンダーを表示し、年をテキストボックスでフォーム入力し、Submitすることにより切り替えます。
この際に、FormからはGetパラメタで送信し、プラグイン内でGetパラメタを取得して年を切り替えます。
カレンダー作成
最初から作ってもいいのですが、こちらを参考にさせていただきました。
ソースコード
で、完成したコードがこちら
calendar($year);
}
add_shortcode('utbt_calendar','utbt_calendar_func');
class UtbtCalendar{
function calendar($year=''){
if (empty($year) && empty($month)) {
$year = date('Y');
}
$html="
";
return $html;
}
//http://shanabrian.com/web/php_calendar.php
private function calendar_exec($year = '', $month = '') {
$tab="";
$str="";
if (empty($year) && empty($month)) {
$year = date('Y');
$month = date('n');
}
//月末の取得
$l_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year));
//初期出力
$html = <<
{$year}/{$month}
Sun |
Mon |
Tue |
Wed |
Thr |
Fri |
Sat |
\n
EOM;
$lc = 0;
// 月末分繰り返す
for ($i = 1; $i < $l_day + 1;$i++) {
$classes = array();
$class = '';
// 曜日の取得
$week = date('w', mktime(0, 0, 0, $month, $i, $year));
// 曜日が日曜日の場合
if ($week == 0) {
$str .= $tab."\t\t\n";
$lc++;
}
// 1日の場合
if ($i == 1) {
if($week != 0) {
$str .= $tab."\t\t
\n";
$lc++;
}
$str .= $this->repeatEmptyTd($week);
}
if ($week == 6) {
array_push($classes, '#0000FF');
} else if ($week == 0) {
array_push($classes , '#FF0000');
}
if (count($classes) > 0) {
$class = '"'.implode(' ', $classes).'"';
}
$doy = date('z', mktime(0, 0, 0, $month, $i, $year))+1;
$str .= $tab."\t\t\t".''.$i.'('.$doy.') | '."\n";
// 月末の場合
if ($i == $l_day) {
$str .= $this->repeatEmptyTd(6 - $week);
}
// 土曜日の場合
if ($week == 6) {
$str .= $tab."\t\t
\n";
}
}
$html .=$str;
$html .= "\n";
return $html;
}
private function repeatEmptyTd($n = 0) {
return str_repeat("\t\t | \n", $n);
}
}
?>
リリース
できたコードをディレクトリごとZIPファイルにし、Wordpressのプラグインに追加します。
また、ページにはこんな感じで書けば無事カレンダーが表示されます
[utbt_calendar]
デモ
作成したデモサイトはこちらになります