*

ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」

公開日: : WordPress ,

前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読み込み関数を組み込みます。

まずは前回までのカレンダー部分を確認しておきます。

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行表示させることに成功します。

スクリーンショット 2013-08-01 2.10.35 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";

以上の処理で空き部屋数が表示されます。

スクリーンショット 2013-08-06 0.54.53

次回はこれを設定に従って○×▲表示にします。


Sponsored Link


 
 

関連記事

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(6)初期設定画面

ここまでで、ひと通りの仕組みというか流れは理解できたような気がします。まずは初期設定画面から制作して

記事を読む

新バーチャル歌姫デビュー CeVIO Creative Studio は期待して良さそう

既にサンプル曲がガンガンアップされています。噂の歌声合成ソフト CeVIO Creative Stu

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(10)空室管理画面 A

さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(9)空室管理画面を考える

前回までで基本的なプラグインの制作方法を簡単に学びました。今回からは空室管理の画面を作ってみます。柔

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(2)

前回の物を若干変更しながら、どんどん進んでいきたいと思います。今回は管理画面の表示内容について行って

記事を読む

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

Message

メールアドレスが公開されることはありません。

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKにジンバルを入れる

やっぱり高いけどEndurance (エンデュランス) カメラバッグの

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKが北の国から

一年中GWの美少女です。 Lowepro カメラリュック フリッ

MOZA Mini-S スマホ用スタビライザーが届いた!

1万円弱で買えるスマホ用ブラシレスジンバルの新型 MOZA Mini-

GoPro Hero7 Black用 保護ケース アルミ合金保護フレームがいいよって話

別に大した話ではありません。 最近書くことが少ないのでたまには書

期待の新製品 MOZA Mini-S スマホ用スタビライザーが発売されたみたい

教えてもらった新製品のホームページで MOZA Mini-Sが紹介され

→もっと見る




  •  

PAGE TOP ↑