ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」
前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読み込み関数を組み込みます。
まずは前回までのカレンダー部分を確認しておきます。
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 プラグインを作る(7)セキュリティ対策
ここでセキュリティ対策についてまとめて復習してみます。ネットを検索すると、さまざまな対策が紹介されて
-
-
WordPressのオリジナルプラグインにショートコード機能を持たせる
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る連載で、ショートコード
-
-
新バーチャル歌姫デビュー CeVIO Creative Studio は期待して良さそう
既にサンプル曲がガンガンアップされています。噂の歌声合成ソフト CeVIO Creative Stu
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(2)
前回の物を若干変更しながら、どんどん進んでいきたいと思います。今回は管理画面の表示内容について行って
-
-
ワードプレス用宿泊予約プラグイン開発「空室情報の表示」とか
久しぶりのワードプレスネタ。全然完成しませんわ。今回は最初にブラウザのキャッシュを切る作業をしました






ご質問は掲示板へお願いいたします。