ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」
前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読み込み関数を組み込みます。
まずは前回までのカレンダー部分を確認しておきます。
function get_booking_calendar($year = "", $month = "") { if(empty($year) && empty($month)) { $year = date("Y"); $month = date("n"); } //月末の取得 $l_day = date("j", mktime(0, 0, 0, $month + 1, 0, $year)); //初期出力 $tmp = <<<EOM <table class="calendar"> <caption>{$year}年{$month}月</caption> <tr> <th class="sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="sat">土</th> </tr>\n EOM; $lc = 0; //月末分繰り返す for ($i = 1; $i < $l_day + 1;$i++) { //曜日の取得 // 0=日曜日 1=月曜日 2=火曜日....6=土曜日 $week = date("w", mktime(0, 0, 0, $month, $i, $year)); //曜日が日曜日の場合 if ($week == 0) { $tmp .= "\t<tr>\n"; $lc++; } //1日の場合 if ($i == 1) { if($week != 0) { // 日曜日じゃない場合 $tmp .= "\t<tr>\n"; $lc++; } $tmp .= repeat($week); // 空枠を$week個挿入する // 例:火曜日は$week=2 なので日曜・月曜の分(2個)空き枠を入れる } if ($i == date("j") && $year == date("Y") && $month == date("n")) { //現在の日付の場合 date("j")は今日の日付(頭にゼロなし) $tmp .= "\t\t<td class=\"today\">{$i}</td>\n"; } else { //現在の日付ではない場合 $tmp .= "\t\t<td>{$i}</td>\n"; } //月末の場合 if ($i == $l_day) { $tmp .= repeat(6 - $week); } //土曜日の場合 ここで次の行に移動する if($week == 6) { $tmp .= "\t</tr>\n"; } } if($lc < 6) { // 仕上がりが6行無い場合は1行追加する $tmp .= "\t<tr>\n"; $tmp .= repeat(7); $tmp .= "\t</tr>\n"; } if($lc == 4) { // 仕上がりが4行だった場合は上と合わせて2行追加で合計6行 $tmp .= "\t<tr>\n"; $tmp .= repeat(7); $tmp .= "\t</tr>\n"; } $tmp .= "</table>\n"; return $tmp; } function repeat($n) { return str_repeat("\t\t<td> </td>\n", $n); } ?>
上のソースの「$tmp」変数に「$tmp2」を追加して空室状況表示の行を足していきます。
..... <th>金</th> <th class="sat">土</th> </tr>\n EOM; $tmp2 = ""; $lc = 0; //月末分繰り返す .... //曜日が日曜日の場合 if ($week == 0) { $tmp .= "\t<tr>\n"; $tmp2 .= "\t<tr>\n"; ....
という感じです。ポイントは「月末の場合」や「土曜日の場合」に以下のように$tmpへ追加し$tmp2の内容をクリアしておくことです。
//土曜日の場合 ここで次の行に移動する if($week == 6) { $tmp .= "\t</tr>\n"; $tmp2 .= "\t</tr>\n"; $tmp .= $tmp2; $tmp2 = ""; }
また、最終部分の行数を調整する部分も同様の処理を加えます。
if($lc < 12) { // 仕上がりが6行無い場合は1行追加する $tmp .= "\t<tr>\n"; $tmp .= repeat(7); $tmp .= "\t</tr>\n"; $tmp2 .= "\t<tr>\n"; $tmp2 .= repeat(7); $tmp2 .= "\t</tr>\n"; $tmp .= $tmp2; $tmp2 = ""; }
以上で表示を確認すると下図のように2行表示させることに成功します。
部屋タイプの取得
最初に部屋タイプを読み込んでおきます。読み込み専用の関数を用意します。
function load_type() { $array_data = array(); $op_data = get_option( 'DrTE_option' ); $array_data[0] = $op_data['DrTE_rooms']; $array_data[1] = $op_data['DrTE_type1']; $array_data[2] = $op_data['DrTE_type2']; $array_data[3] = $op_data['DrTE_type3']; return $array_data; }
そしてカレンダーのメイン関数get_booking_calendar に引数の部屋タイプを追加します。
function get_booking_calendar($year = "", $month = "", $type = 1) { ....
本題の空室情報の読み込み
そして改造すべき部分は次の処理です。
if ($i == date("j") && $year == date("Y") && $month == date("n")) { //現在の日付の場合 date("j")は今日の日付(頭にゼロなし) $tmp .= "\t\t<td class=\"today\">{$i}</td>\n"; $tmp2 .= "\t\t<td class=\"today\">{$i}</td>\n"; } else { //現在の日付ではない場合 $tmp .= "\t\t<td>{$i}</td>\n"; $tmp2 .= "\t\t<td>{$i}</td>\n"; }
$tmp2 の行を以下の内容に書換えます。
$tmp2 .= "\t\t<td class=\"today\">" . load_aki_data($year, $month, $i, $type) . "</td>\n";
以上の処理で空き部屋数が表示されます。
次回はこれを設定に従って○×▲表示にします。
Sponsored Link
関連記事
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(3)
前回のソースがイマイチだったので若干書き直しました。しかし、これで正しいのかも疑問なんですが、取り敢
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(1)
初心者が、あらためて WordPress のプラグインを一から作る経過報告。たぶん連載記事ですね。途
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(11)空室管理画面 B
空室管理画面の2回目。今回は空室状況の入力欄と月が変わった時の処理を加えてみます。今回は一覧表示なの
-
ワードプレス用宿泊予約プラグイン開発「空室情報の表示」とか
久しぶりのワードプレスネタ。全然完成しませんわ。今回は最初にブラウザのキャッシュを切る作業をしました
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(10)空室管理画面 A
さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する
ご質問は掲示板へお願いいたします。